我試圖創建一個HTML頁面,可以將表單數據以JSON的形式提交給服務器。我諮詢了答案this question和我使用下面的代碼來做到這一點:作爲JSON發送表單數據 - 瀏覽器更改內容類型
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.json.org/json2.js"></script>
<script type="text/javascript">
$(function() {
var frm = $(document.myform);
var dat = JSON.stringify(frm.serializeArray());
alert("I am about to POST this:\n\n" + dat);
$.ajax({
type: "POST",
data: dat,
success: function(){},
dataType: "json",
contentType : "application/json"
});
});
</script>
</head>
<body onload="javascript:document.myform.submit()">
<form action="http://www.foo.com/" method="post" name="myform">
<input name="firstName" value="harry" />
<input name="lastName" value="tester" />
<input name="toEmail" value="[email protected]" />
</form>
不過,如果我使用打嗝代理工具攔截請求,我可以看到,由於某些原因,在Content-Type成爲application/x-www-form-urlencoded
爲一旦請求離開瀏覽器。這裏的請求的截圖:
我想知道爲什麼會出現這種情況與要求?爲什麼瀏覽器在請求中改變Content-Type?有一個更好的方法嗎? PS:我試過沒有jQuery(使用XHR,如解釋here)。
我看到我的代碼的問題。但是,我仍然無法發出POST請求,因爲瀏覽器禁止跨域請求。 –
沒錯,你可以用jsonp搞定,但是你需要修改服務器端代碼,以使 – user1572796