以下是 WebMethod 到 Ajax 调用的输出:
var item=""[{\"Column1\":\"false\"}]""
总有一行输出,即true
或false
,我想获得Column1
的值,我已经尝试Jquery.ParseJson(item)
,但它给出了非法令牌错误,请帮助我如何阅读此值。请检查引号“,这是我web method
的确切结果,这个结果和格式scenario是场景的必要条件。谢谢。在使用循环时它会给出错误:
答案 0 :(得分:2)
如果我理解你的问题,我认为你的字符串附加引号是一个问题,这是无效的语法。
这有效:
var item = "[{\"Column1\":\"false\"}]";
var parsed = JSON.parse(item);
parsed.forEach(function(row) {
console.log(row.Column1);
});
console.log(parsed[0].Column1);
这是jsfiddle。
请参阅此处关于jQuery.ParseJson vs JSON.parse,我更喜欢JSON.parse,但要么应该正常工作。
对于没有forEach
的旧浏览器,请使用for
循环或像下划线这样的库。
var item="[{\"Column1\":\"false\"}]";
var parsed = JSON.parse(item);
//if forEach is not supported:
for (var i = 0; i < parsed.length; i++) {
console.log(parsed[i].Column1);
}
console.log(parsed[0].Column1);
这是for循环jsfiddle。
答案 1 :(得分:0)
不确定您的服务输出,但我认为您可以尝试这样做:
str = 'var item=""[{\"Column1\":\"false\"}]""';
str = str.replace(/"/g, '');//remove quotes and slashes to make valid json
eval(str);//evaluate the string
console.log(item[0].Column1);
答案 2 :(得分:0)
我了解上述解决方案无法与您的浏览器完美配合,这是另一种替代解决方案,但我知道它可能不适合您的方案,但因为您的输出是true
或false
。而不是在服务器端使用JsonConvert
,只需将对象数组返回到客户端,并像这样读取值。
var tempo=item[0].Column1;