更好的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'); } });