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

ひび割れた!正しい方法は

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 以降
私のユースケースでは OK ;) 皆さんの意見に感謝します。

于 2013-05-01T19:29:40.863 に答える
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 に答える