我有以下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 parameters are not formatted properly
var searchCriteria = {};
searchCriteria.Accrual = "A";
searchCriteria.Brand = "B";
$.getJSON(url, searchCriteria
, function (data) {
if (data.length) {
alert('Success');
}
});
答案 0 :(得分:4)
您的两个示例未将data
参数传递给$.getJSON()
。
工作示例传递此对象:
{
Accrual: "A",
Brand: "B"
}
非工作示例传递此对象:
{
searchCriteria: {
Accrual: "A",
Brand: "B"
}
}
看到区别?
要修复将{ searchCriteria: searchCriteria }
传递到$.getJSON()
的非工作示例,您可以将其更改为searchCriteria
,从而删除额外级别的对象。
另请注意,这些是您在此处使用的JavaScript对象,而不是JSON。例如,您不必按照JSON的要求引用"Accrual"
之类的属性名称。 (引用属性名称不会有任何损害,它只是在JavaScript对象中没有必要。)知道何时专门处理JSON以及处理普通JavaScript对象时,这很有用,因为它们是不一样的。
答案 1 :(得分:0)
您的注释代码将不同的对象传递给未注释的代码
评论数据(非工作):
{
searchCriteria: {
Accrual: "A",
Brand: "B"
}
}
未注释的数据(工作):
{
Accrual: "A",
Brand: "B"
}
原来评论的ajax请求应该是:
$.getJSON(url, searchCriteria, function (data) {
if (data.length) {
alert('Success');
}
});