1

私はこれに苦労しています。

$.ajax を使用して要素データを php ファイルに渡そうとしていますが、常に空が返されます。

これが私のコードです:

    strJson = '{'
    $.each(this_side.data(), function(i, v) {
        strJson += i + ":'" + v + "',";
    });
    strJson += term_id + ":'" + term_id + "',";
    strJson += new_page_num + ":'" + new_page_num + "'";
    strJson += '}';

    alert(strJson); // this works

    $.ajax({
        url: 'my url here',
        type: 'post',
        data: strJson,
        success: function(data){
            alert(data);
        }
    });

$_POST のアウトポットは空の配列です。動いていない。

ここで何が欠けていますか???

4

5 に答える 5

1

dataTypeandを気にしないでcontentTypeください。jQueryはそれ自体でそれを行う必要があります。何をthis_side.data()返しますか?配列の場合、ループ内のi変数$.eachは数値であり、JSON の形式が間違っているだけです。試す

$.each(this_side.data(), function(i, v) {
    strJson += "'" + i + "':'" + v + "',";
});

次に、JSON 文字列ではなく、JSON オブジェクトも投稿する必要があります。

 $.ajax({
    data : JSON.parse( strJson ),
    ...
 })

this_side.data()これは、オブジェクトを返し、キーに「-」などの「特殊」文字がある場合も考慮されます。

this_side.data()オブジェクトを返す場合、次のほうがはるかに簡単です。

$.ajax({
    url: 'my url here',
    type: 'post',
    data: $.extend( 
            this_side.data(),
            {'term_id': term_id, 'new_page_num' : new_page_num }
          ),
    success: function(data){
        alert(data);
    }
});
于 2013-03-28T08:55:09.070 に答える
0

これを試して:

$.ajax({
    url: 'my url here',
    type: 'POST',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: { param: strJson },
    success: function(data){
        alert(data);
    }
});
于 2013-03-28T08:44:31.137 に答える
0

追加してみてくださいdataType:"json"

$.ajax({
    url: 'my url here',
    type: 'post',
    data: $.parseJSON(strJson),
    dataType: "json",
    success: function(data){
        alert(data);
    }
});

送信する前にstrJsonwithを解析します。$.parseJSON()

于 2013-03-28T08:44:31.717 に答える
0

lordVlad コメントによる更新された回答:

strJson = '{'
    $.each(this_side.data(), function(i, v) {
        strJson += i + ":'" + v + "',";
    });
    strJson += "'"+ i + "':'" + v + "',";
    strJson += new_page_num + ":'" + new_page_num + "'";
    strJson += '}';

dataTypeコードに「contentType」を追加してみてください

$.ajax({
        url: 'my url here',
        type: 'post',
        data : JSON.parse(strJson),
        dataType: 'json',
        success: function(data){
            alert(data);
        },
        contentType: "application/json; charset=utf-8"
    });

また、公式ドキュメントを確認することもできます: http://api.jquery.com/jQuery.post/

于 2013-03-28T08:40:50.820 に答える
0

data パラメーターでは、json 形式の文字列を送信しています。

次の形式でデータを送信してみてください。

strJson='name=Will&address=florida';

これがうまくいくかどうか教えてください。

于 2013-03-28T08:56:26.637 に答える