【发布时间】:2012-04-22 11:10:32
【问题描述】:
我的 JSONP 请求有问题.. 数据不会显示,Firebug 显示“invalid label”错误..
我的 JavaScript:
$.ajax({
url: link,
dataType: "jsonp",
beforeSend: function(xhr) {
var base64 = btoa(username + ":" + password);
xhr.setRequestHeader("Authorization", "Basic" + base64);
xhr.overrideMimeType("application/json");
},
jsonpCallback: "getResources"
})
function getResources(data) {
alert(data);
alert(JSON.parse(data));
$.each(data.groupStatus, function(i, item) {
$("body").append("<p>ID: " + item.id + "</p>");
});
}
我的 JSON:
{
"groupStatus": [
{
"id": "Application Layer Configuration-ApplicationLayer",
"time": 1332755316976,
"level": 0,
"warningIds": [],
"errorIds": []
},
{
"id": "Application Layer-ApplicationLayer:nscalealinst2",
"time": 1333431531046,
"level": 0,
"warningIds": [],
"errorIds": []
}
]
}
我的 HTML:
<html>
<head>
<title>Monitor</title>
<link href="css/gadget.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/javascript" src="js/gadget.js"></script>
</body>
请求工作正常,但无论如何数据都没有显示。
我几天来一直在寻找解决方案。有人可以帮助我吗?提前谢谢!
解决方案(更新:06.09.12)
我已经解决了这个问题。执行的服务器(REST接口)没有实现回调函数.. 不使用 JSONP 设置跨域请求的另一种方法是设置以下 jquery 变量:
jQuery.support.cors = true;
【问题讨论】:
-
这是因为 JSON 不是 一个有效的 JS 程序,但它正试图被用作一个。找出 JSONP 未按预期工作的原因。 (顺便说一句,
getRessources看起来像是拼写错误。) -
请求工作正常..我添加了响应的图像..
-
响应不是 JSONP,而是 JSON。 JSONP 响应应该包装在像
callback({"foo": "bar"})这样的函数调用中 -
您发送请求的服务器似乎不支持 JSONP 请求,或者您没有正确执行调用。
标签: javascript ajax json jsonp syntax-error