亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么這里傳給后臺的data不用json格式,如果用json格式,該怎么寫

document.getElementById("save").onclick?=?function()?{?
	var?request?=?new?XMLHttpRequest();
	request.open("POST",?"server.php");
	var?data?=?"name="?+?document.getElementById("staffName").value
	??????????????????+?"&number="?+?document.getElementById("staffNumber").value?
	??????????????????+?"&sex="?+?document.getElementById("staffSex").value?
	??????????????????+?"&job="?+?document.getElementById("staffJob").value;
	request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
							
	request.send(data);							
	request.onreadystatechange?=?function()?{
		if?(request.readyState===4)?{
			if?(request.status===200)?{?
				document.getElementById("createResult").innerHTML?=?request.responseText;
			}?else?{
				alert("發生錯誤:"?+?request.status);
			}
		}?
	}
}


正在回答

2 回答

以下是W3Cschool上對send 方法的解釋:

http://img1.sycdn.imooc.com//579f2fe900012af307830247.jpg

當send方法被用作post 請求時,需要接收string類型的參數。這就是為什么代碼中要拼出一個很長的字符串用作參數。如果想寫成JSON格式比如

var?data={
????"name":?document.getElementById("staffName").value
????...
????}

那么data還是不能被用作send的參數,因為JS中變量的類型是它所指向的目標的類型,所以以上代碼中data的類型是 Object,并不為send方法所接受。

3 回復 有任何疑惑可以回復我~
#1

newsudhc3634140 提問者

請問那 如果上傳圖片,下載圖片要怎么解決呢?json和string都是文本而已,如果從服務端加載圖片的話呢? 謝謝~~
2016-08-01 回復 有任何疑惑可以回復我~

我覺得一般不需要用ajax從服務器獲取圖片。用<img>標簽,瀏覽器解析到這個標簽就會自動下載圖片并進行渲染。

至于上傳圖片,我所知道的是出于安全考慮,JS是不能直接操作本地的文件。其他的不是很清楚,所以我去查了一些資料:

https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects

總結一下:

  • 可以用FormData 對象用Ajax實現文件上傳。

FormData support starts from following desktop browsers versions. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+

  • 限制是這是XHR2 標準,只有部分瀏覽器支持.實現代碼:

var?formData?=?new?FormData();
formData.append("username",?"Groucho");
formData.append("accountnum",?123456);
formData.append("userfile",?fileInputElement.files[0]);
var?request?=?new?XMLHttpRequest();
request.open("POST",?"submitform.php);
request.send(formData)

還有一種實現不用formData對象,而是用絕大部分瀏覽器都支持的<form> 標簽和<iframe>來實現類似Ajax的效果,即上傳文件而不刷新頁面。我個人覺得和ajax沒有很大關系可作為參考

http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html#


2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Ajax全接觸
  • 參與學習       224759    人
  • 解答問題       708    個

本課程通過一個案例,講解Ajax的相關概念原理實現方式和應用

進入課程

為什么這里傳給后臺的data不用json格式,如果用json格式,該怎么寫

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號