Java 使用jQuery 1.9解析JSON时出错,但eval中没有错误
我正在重写java.Object.toString()以获取JSON,而不使用应用程序服务器端的任何JSON库 jQuery版本Java 使用jQuery 1.9解析JSON时出错,但eval中没有错误,java,json,jquery,Java,Json,Jquery,我正在重写java.Object.toString()以获取JSON,而不使用应用程序服务器端的任何JSON库 jQuery版本1.9.0和 JDK版本1.6.21 作为对以下问题的答复: var jqxhr = $.ajax(url:"/getAvailableAddress.do", type:"GET", data:"cat=PreOrder&task=getAvailableAddress"+$(form).serialize() ) .done(function(res
1.9.0
和
JDK版本1.6.21
作为对以下问题的答复:
var jqxhr = $.ajax(url:"/getAvailableAddress.do",
type:"GET",
data:"cat=PreOrder&task=getAvailableAddress"+$(form).serialize() )
.done(function(response) { console.log(response); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
我正在从我的服务器获取以下JSON:
{
"response": [
{
"alk": "123456",
"qualifier": "golden",
"buildingname": "Rose Appartments",
"buildingnumber": "1245",
"Street": "Nehru Street",
"Town": "Kolkata",
"Postcode": "MQK 456"
},
{
"alk": "123457",
"qualifier": "platinum",
"buildingname": "Lily Appartments",
"buildingnumber": "1585",
"Street": "Modi Street",
"Town": "Bangalore",
"Postcode": "476 AKQ"
}
]
}
当我尝试执行以下操作时:
var result = $.parseJSON(response);
alert(result.response[0].alk);
我在Jquery文件中遇到一个javascript错误:
Uncaught SyntaxError: Unexpected token o jquery-1.9.0.min.js:1
st.extend.parseJSON jquery-1.9.0.min.js:1
(anonymous function)
但是当我使用下面的代码时,我没有得到任何错误
var result = eval(response);
alert(result.response[0].alk);
jQuery解析有什么错?如果未设置数据类型
属性,jQuery“智能地猜测”AJAX请求的返回。它相应地解析它
jQuery.ajax()
数据类型(默认值:智能猜测(xml、json、脚本或html))
如果您返回了JSON以及正确的头,那么您将在回调中收到的数据将根据其预期类型进行预解析。不再需要解析了
另外,检查是否存在错误。您可以使用在线提供的信息。如果来自服务器的响应包含“var response=”则从技术上讲,这不是有效的JSON。JSON只是对象表示法{}和该对象表示法中的值。前面不应该有=或var。Eval()无法捕捉到这一点,因为较大的语句是有效的JavaScript(它正在创建一个名为response的变量)谢谢@adeneo。我通过研究您的
JSON.parse()
解决了我的问题
以下代码起作用:
var jqxhr = $.ajax(url:"/getAvailableAddress.do",
type:"GET",
data:"cat=PreOrder&task=getAvailableAddress&"+$(form).serialize() )
.done(function(response) {
var result =$.parseJSON('"'+response+'"');
alert(result.response[0].alk);
})
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
您是如何获得JSON的?您是否尝试过
var result=JSON.parse(response)
,如果您的浏览器支持,jQuery应该在内部使用它?@JosephDreamer-我正在使用$.ajax()并将JSON记录到控制台。如果控制台显示一个对象,这就是您所拥有的,无需再次解析它。然后您需要解析它,您是否尝试将文本从控制台复制粘贴到JSON lint中并查看它是否有效,您是否尝试过JSON.parse来查看会出现哪些错误。