更好的JSON数据结构

我有以下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'); } }); }); 

工作 – 网络标题:

在此处输入图像描述

不工作 – 网络标题:

在此处输入图像描述

UPDATE

以下代码在这里工作。 另请参考jQuery Ajax参数格式不正确

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

您的两个示例不会将相同的data参数传递给$.getJSON()

工作示例传递此对象:

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

非工作示例传递此对象:

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

看到不同?

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

另请注意,这些是您在此处使用的JavaScript对象,而不是JSON。 例如,您不必引用JSON要求的"Accrual"等属性名称。 (引用属性名称不会有任何损害,它只是在JavaScript对象中没有必要。)知道何时专门处理JSON以及何时处理普通JavaScript对象是有用的,因为它们是不一样的。

您的注释代码将不同的对象传递给未注释的代码

评论数据(非工作):

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

未注释的数据(工作):

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

原来评论的ajax请求应该是:

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