0

我正在使用这段代码:

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 进行测试

谢谢,伊恩

4

3 回答 3

0

$_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
    });
于 2013-05-01T18:16:31.390 回答
0
function save() {
    // submit the dataform
    $.post(document.dataform.action, 
        { data: $("#dataform").serializeArray() })
    .done(function(reply) {
           //handle reply here
    });
}

然后 json_decode($_POST['data']); 在 PHP 中

于 2013-05-01T18:34:51.397 回答
0

破解它!正确的方法是

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+
适合我的用例;)感谢大家的意见。

于 2013-05-01T19:29:40.863 回答