【发布时间】:2011-07-22 10:27:24
【问题描述】:
我有一个返回有效 json 对象(由 jsonlint.com 验证)的服务器,如下所示:
"{\"encryption\": {\"key\": \"gKV0oPJwC5CBQxmn\"}}"
我的 html 文件如下所示:
<html>
<head>
<title>Testing Jsonp</title>
<script type="text/javascript" src='jquery-1.4.4.js'></script>
<script type="text/javascript" src='app.js'></script>
</head>
<body>
<input type='text' value='thing' id='target' />
<a href='' class='init'>Click</a>
</body>
</html>
app.js 看起来像这样:
$(document).ready(function(){
$('.init').click(function(event){
$.getJSON("http://localhost:37280/sites/1/encode?callback=?", { key: $("#target").attr('value') }, function(data){
alert('Success!');
});
event.preventDefault();
});
});
当我点击“点击”时,Chrome 网络控制台表示请求已发送,我的服务器日志确认已收到请求,并且 chrome 表示已收到上述 json 字符串。但随后什么也没有发生。我没有收到导致我相信我的回调没有执行的警报。任何帮助将不胜感激!
【问题讨论】:
-
响应是否实际上返回了 JSON 对象周围的引号?他们不应该在那里。
-
添加一个错误处理程序并查看它的内容。
-
我已经让服务器以两种方式返回字符串,它似乎对回调的执行没有影响。
-
我注意到当我设置服务器返回 {"encryption": {"key": "gKV0oPJwC5CBQxmn"}} 而不是 "{"encryption": {"key": "gKV0oPJwC5CBQxmn"}} " Chrome 控制台抛出此错误:"Uncaught SyntaxError: Unexpected token :"
-
还添加了一个不产生任何输出的错误处理程序。
标签: javascript jquery ajax json