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参数传递给$.getJSON().

工作示例传递了这个对象:

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

非工作示例传递此对象:

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

看到不同?

{ searchCriteria: searchCriteria }要修复传入的非工作示例,$.getJSON()您可以将其更改为searchCriteria,从而删除额外级别的对象。

另请注意,这些是您在此处使用的 JavaScript 对象,而不是 JSON。例如,您不必像"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 回答