1

次のjQueryコードがあり、正常に動作し、サーバーで適切に逆シリアル化できます。

しかし、変数を作成してそれを JSON オブジェクトとして渡そうとすると、うまくいきませんでした。(コメント付きのコードは機能しませんでした。値がサーバーに正しく到達しませんでした)。

参考:http ://www.json.org/js.html

JSON オブジェクトの変数を正しく定義するにはどうすればよいでしょうか?

$(".searchCostPages").click(function () {


        var url = '/SearchDisplay/' + 'TransferSearchCriteria';

        //var searchCriteria = {};
        //searchCriteria.Accrual = "A";
        //searchCriteria.Brand = "B";

    //$.getJSON(url, {searchCriteria: searchCriteria
        //}, function (data) {
        //    if (data.length) {
        //        alert('Success');
        //    }

        //});

        $.getJSON(url, {
            "Accrual": "A",
            "Brand": "B"
                    }, function (data)
                    {
                        if (data.length)
                        {
                            alert('Success');
                        }

                    });



    });

動作中 - ネットワーク ヘッダー:

ここに画像の説明を入力

動作していません - ネットワーク ヘッダー:

ここに画像の説明を入力

アップデート

次のコードはここで機能しました。jQuery Ajaxパラメータが正しくフォーマットされていないことも参照してください

    var searchCriteria = {};
    searchCriteria.Accrual = "A";
    searchCriteria.Brand = "B";

    $.getJSON(url, searchCriteria
    , function (data) {
        if (data.length) {
            alert('Success');
        }

    });

4

2 に答える 2

4

dataあなたの2つの例は、同じ引数をに渡しません$.getJSON()

実際の例では、次のオブジェクトを渡します。

{
    Accrual: "A",
    Brand: "B"
}

動作しない例では、次のオブジェクトが渡されます。

{
    searchCriteria: {
        Accrual: "A",
        Brand: "B"
    }
}

違いを見ます?

{ searchCriteria: searchCriteria }に渡す動作しない例を修正するには、それを に$.getJSON()変更してsearchCriteria、オブジェクトの余分なレベルを削除します。

また、これらは JSON ではなく、ここで使用している JavaScript オブジェクトであることに注意してください。たとえば、"Accrual"JSON のようにプロパティ名を引用符で囲む必要はありません。(プロパティ名を引用しても問題はありません。JavaScript オブジェクトでは必要ないだけです。)特に JSON を扱っている場合と通常の JavaScript オブジェクトを扱っている場合を知っておくと便利です。同じことではありません。

于 2013-09-11T16:50:35.167 に答える
0

コメント化されたコードは、コメント化されていないコードに別のオブジェクトを渡します

コメント付きデータ (非稼働):

{
    searchCriteria: {
        Accrual: "A",
        Brand: "B"
    }
}

コメントされていないデータ (作業中):

{
    Accrual: "A",
    Brand: "B"
}

元のコメント付き ajax リクエストは次のようになります。

$.getJSON(url, searchCriteria, function (data) {
    if (data.length) {
        alert('Success');
    }
});
于 2013-09-11T16:55:47.043 に答える