javascript - 使用 JSONP 时出现 "invalid label"?

标签 javascript ajax json jsonp syntax-error

我的 JSONP 请求有问题.. 数据不会显示,Firebug 显示“无效标签”错误..

enter image description here

我的 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>

请求工作正常,但无论如何都没有显示数据。

enter image description here

我搜索了好几天的解决方案。有人可以帮助我吗?提前致谢!

解决方案(更新:06.09.12)

我已经解决了这个问题。执行的服务器(REST 接口(interface))没有实现回调函数。 不使用 JSONP 设置跨域请求的另一种方法是设置以下 jquery 变量:

jQuery.support.cors = true;

最佳答案

对 JSONP 调用的响应需要将 JSON 本身包装在函数调用中,其中被调用函数的名称通常在 url 中提供。 jQuery 会自动向请求的 URL 添加一个查询字符串参数“callback”,因此您服务器上的脚本应该执行类似以下操作:

// assuming that $JSON contains your JSON content
print "{$_REQUEST['callback']}( {$JSON} );";

将函数名称添加到响应的原因是 JSONP 请求实际上是附加到 DOM 的脚本标记,而不是 XMLHttpRequest 对象发出的常规请求。使用 JSONP 允许浏览器发出跨域请求,否则这些请求将被(默认情况下)应用于 XHR 的跨域策略阻止。

关于javascript - 使用 JSONP 时出现 "invalid label"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084044/

相关文章:

javascript - 错误的 POST 请求和使用 Ajax 的 GET 没有返回值

javascript - 页面加载后位置奇怪

javascript - 从外部api获取数据

javascript - OpenLayers:修改功能不起作用

javascript - 如何构建一个只接受 16 个或更少字段的正则表达式

c# - JsonConvert string to integer 关于数字分组符号

json - 在 Swift 中,如何将具有任何类型值的字典转换为 JSON 字符串

json - 如何使用 jq 查找 JSON 对象中值符合给定条件的所有路径?

javascript - WordPress:我可以启动在同一页面上声明的小型 JavaScript 吗?或者如何将 .js 文件上传到 Wordpress?

跨浏览器范围的 Javascript 插件