簡體   English   中英

如何使用jquery進行發布並捕獲JSON中的回復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM