-1

ajax を使用して JavaScript 配列を新しいページに送信しようとしています。SOには多くの質問があり、答えを精査した後、次のようにAjaxを使用することにしました。

var test = {}; 
test['a1'] = 1;  
test['a2'] = 2;

$(document).ready(function(){
$('#form').submit(function(e){

    $.ajax({
        url: 'newpage.php',
        data: {test:test},
        type: 'post',
        success: function(data) {
        alert(data);
        }
    });
    window.open('newpage.php', 'formres','width=800,height=800,resizeable,scrollbars');
    e.preventDefault();
});

});

新しいウィンドウが正常に開くという点で機能しますが、 $_POST 配列は空です。私は何を間違っていますか?

編集: {test:test}、{'test':test} を試し、テストしました。データをシリアライズして、何が起こるか見てみます。@Louis H: ありがとう、それは考えていませんでした。Firebugで試してみます。皆さん、ありがとうございました!

Edit2:テスト配列が通過しなかったことはまだ気になります。Kevin B が指摘したように、ポスト リクエストはパラメータ a1 と a2 を保持する必要がありますが、そうではありません。間違っているところが分かったらまた投稿します。

4

3 に答える 3

0

試す

$(this).serialize()

あなたのデータのために。これにより、フォームが $_POST で使用できる正しいポストデータにシリアライズされます。

詳細: http://api.jquery.com/serialize/

この投稿の結果をポップアップに表示したいですか? 次に、コールバック関数でウィンドウを開く必要があります。

$('#form').submit(function(e){

    $.ajax({
        url: 'newpage.php',
        data: $(this).serialize(),
        type: 'post',
        success: function(data) {
            alert(data);
            window.open('newpage.php', 'formres','width=800,height=800,resizeable,scrollbars');
        }
    });

    return false;
});
于 2013-01-28T16:03:00.503 に答える
0

Two years later and I find this still relevant. Content headers have to be set for POST, and in Javascript, you do it like this:

 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
于 2016-02-17T09:34:05.403 に答える