[英]How to POST using jquery and capture the reply in JSON
我正在使用此代碼:
function save() {
// submit the dataform
$.post(document.dataform.action,
$("#dataform").serialize(),
function(reply) {
//handle reply here
});
}
這會將正確的數據發送到服務器,但到達$ _GET。 當我更改服務器代碼以使其匹配時,會得到預期的答復。 在dataform.action上有一部分查詢。 我預計會到達$ _GET。
如何實際獲取POST以從表單發送數據,使其到達$ _POST,從而避免GET的大小限制?
我正在使用Firefox,JQuery 9和PHP 5.4.3進行測試
謝謝,伊恩
$ _GET從查詢字符串中獲取參數,因此只需$ _POST和$ _GET即可:
var action = document.dataform.action;
var get_variable = "var1=v1&var2=v2...";
action = action+"?"+get_variable;
$.post(action,
$("#dataform").serialize(),
function(reply) {
//handle reply here
});
function save() {
// submit the dataform
$.post(document.dataform.action,
{ data: $("#dataform").serializeArray() })
.done(function(reply) {
//handle reply here
});
}
然后json_decode($ _ POST ['data']); 在PHP中
破解了! 正確的方法是
function save() {
// submit the dataform
$.ajax({
url: document.dataform.action,
data: new FormData(document.dataform),
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(reply){
if (reply.action) fetch('/content.php',reply.action);
if (reply.content) document.getElementById('content').innerHTML=reply.content;
if (reply.menu) document.getElementById('menu').innerHTML=reply.menu;
if (reply.status) document.getElementById('status').innerHTML=reply.status;
calcSize();
}
});
}
但是,這僅適用於支持FormData的瀏覽器-Chrome 7 +,FF4.0 +,IE 10 +,Opera 12+和Safari 5+
我的用例還可以;)謝謝大家的投入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.