我找到了几个类似于这个主题的帖子,但我尝试过的任何内容实际上都没有。我的问题很简单,应该很容易回答。我的返回json对象将有一个键和一个值。对于下面的代码,警报显示“[{”DISCOUNT“:1}]”,我要做的就是解析“1”并显示它。最终,我想将该值插入变量并用于乘法,但我甚至无法获得自己显示的数字。我的代码如下:
function codeMatchTest() {
if ($('#dbReturnString').val() == '') {
alert("Please enter a discount code.");
} else {
$.ajax({
type: "POST",
url: "PROMO.svc/MatchCode",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({ codeInput: $('#dbReturnString').val().toLowerCase() }),
success: function (json) {
alert(json.d);
/*alert (json.d.discount); // getting "undefined"
$.each(json.d, function (key, value) {
var discount = value;
});
alert("Success: " + discount); //getting "undefined" */
},
error: function () {
alert("There was an error with your request.");
}
});
}
}
我没有找到关于如何在json对象中实际使用数据的好参考。我的json对象只包含一个键和值,我只需要使用该值。
另外,我尝试使用$ .each进行多次迭代,但没有工作。根据jquery文档,它应该很容易,但我没有运气。
答案 0 :(得分:1)
如果您的提醒显示"[{"DISCOUNT":1}]"
,则表示您在阵列中有对象。
尝试alert(json.d[0].DISCOUNT);
答案 1 :(得分:1)
JSON解析的对象是区分大小写的,加上它似乎json.d包含一个字符串(似乎是在json中)而不是一个对象。尝试:
var discount = JSON.parse(json.d); discount = discount [0] .DISCOUNT;
答案 2 :(得分:0)
success: function(json) {
alert(json.d[0]["DISCOUNT"]);
}
答案 3 :(得分:0)
首先评论你的代码,你正在重新发明jQuery的功能。
data: JSON.stringify({ codeInput: $('#dbReturnString').val().toLowerCase() }),
应该只是
data: { codeInput: $('#dbReturnString').val().toLowerCase() },
现在要获取数据很简单,您将返回一个包含对象的数组。
让我们将其视为常规变量,而不是Ajaqx调用。
var json = [{"DISCOUNT":1}];
所以你有一个阵列?你如何得到它内部的对象?您引用索引。既然你说只返回一个索引,那么使用[0]来访问它。
success: function (json) {
alert(json[0].DISCOUNT);
答案 4 :(得分:0)
要访问json
中的第一项,您可以使用
alert(json.d[0].DISCOUNT);
因为json.d
是一个数组,它包含一个0
索引的对象。因此,json.d[0]
将从数组中选择第一个项目/对象,并使用.DISCOUNT
您可以访问该对象的属性。也可以访问该属性,如
alert(json.d[0]["DISCOUNT"]);
答案 5 :(得分:0)
试试这种方式
您可以使用JSON.parse(json.d)/ json.d
var data = json.d;
for(i=0;i<data.length;i++) {
alert(data[i].fieldname);
}