【问题标题】:Traditional JSONP: Uncaught SyntaxError: Unexpected token :传统 JSONP: Uncaught SyntaxError: Unexpected token :
【发布时间】:2015-07-04 06:26:02
【问题描述】:

我有这个代码:

<!DOCTYPE html>
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <title>Test</title>
    <script type="text/javascript" src="http://www.roblox.com/games/getgameinstancesjson?placeId=1818&startindex=0&jsonp=processResults"></script>
    <script>
        function parseResults(results) {
            alert('success');
        }
    </script>
</head>
<body>
</body>
</html>

当我运行它时,它出现了一个错误: Uncaught SyntaxError: Unexpected token :

我已经查过了,但所有的解决方案都是用 JQuery 的。我没有使用 JQuery;我正在使用“传统”JSONP。

我该如何解决这个问题?

提前谢谢你。

【问题讨论】:

  • 您将不得不发布响应的内容,因为这就是问题所在。
  • jsonp 和 jquery 并不是真正可比的东西
  • 你确定是parseResults()。您的 JSONP 回调是 processResults()

标签: javascript html jsonp


【解决方案1】:

尝试在浏览器中打开http://www.roblox.com/games/getgameinstancesjson?placeId=1818&amp;startindex=0&amp;jsonp=processResults 链接。如您所见,它返回JSON,而不是JSONP

为此,结果应如下所示:

processResults({JSON COMES HERE})

代替:

{JSON COMES HERE}

所以我猜您可能需要查阅服务器端脚本的文档,以确保它返回正确编码的JSONP 结果,其中响应包含在您提供的回调函数中。

因此,如果服务器不支持 JSONP 或 CORS,您可能需要在自己的网站上编写一个服务器端脚本,充当您的域和远程主机之间的桥梁,然后将 AJAX 请求发送给您自己的域。

【讨论】:

  • 我不确定你的意思。你能提供完整的代码来解决这个问题吗?提前谢谢你。
  • 无法从客户端解决此问题。这是服务器端的问题。服务器必须支持 JSONP。请阅读服务器需要返回的 JSONP 格式:en.wikipedia.org/wiki/JSONP。所以基本上服务器应该将生成的 JSON 包装在您提供的回调中。通过查看Wiki of roblox.com,他们似乎不支持 JSONP。
  • 如何确保服务器可以处理 JSON?提前致谢。
  • 您阅读了他们的文档。通过查看他们的Wiki,他们没有提到任何 JSONP,所以我猜他们不支持它。
  • 您尝试使用的服务器端脚本的文档。在您的情况下,这将是roblox.com。通过谷歌搜索,这是我找到的链接:wiki.roblox.com/index.php?title=Web_APIs。他们似乎没有提到任何关于 JSONP 的内容。
猜你喜欢
  • 1970-01-01
  • 2018-06-18
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2013-12-29
  • 2013-10-10
  • 2016-11-29
相关资源
最近更新 更多