javascript - JSONP 和 DOCTYPE 错误

标签 javascript ajax jsonp xml-rpc doctype

我遇到了一个奇怪的问题。

我正在使用 AJAX 与我的服务器通信。 (我在 localhost 上运行我的 Web 应用程序)。 服务器位于,比方说,http://www.example.com

为了绕过同源策略,我使用了 JSONP。我动态创建一个 <script>标记并从我的服务器加载数据。

到目前为止一切顺利。

然后我决定将我的 Web 应用程序上传到这个子域:http://m.example.com

那是我遇到疯狂错误的时候。有时页面会加载,有时不会。当它不加载时,Firebug 抛出 DOCTYPE错误。

我做了一些研究,发现了这个 stackoverflow 帖子:firebug returns syntax error in doctype?

在此链接中引用一个答案:

This usually happens because you are loading an HTML document as a script. This is often caused by <script src=""></script> (i.e. a relative URI pointing at the current, HTML, document)) or one of the scripts pointing to a 404 error.

非常有用的东西。基于所有这些,我从以上所有内容得出结论,每当我的服务器响应缓慢时,<script>标签的 src属性为空。因为那会抛出 404 error , 我得到一个 DOCTYPE Firebug 中的错误。每当我的服务器快速响应时,都没有问题,一切正常。

我该如何解决这个问题?我可以设置一个手动超时或其他东西,但这并不是万无一失的优雅解决方案。

有什么帮助吗?

编辑:

这是一些代码:

此函数用于创建 script动态标记:

function appendScriptToHead() {
    var element = document.createElement("script");  
    element.src = 'http://www.example.com/?data&callback=callfunction'; 
    document.getElementsByTagName("head")[0].appendChild(element) 
}

当加载上述包含 JSONP 数据的 url 时调用此回调函数:

function callfunction(response) {  
    alert(response);  
}

最佳答案

我觉得这里有点误会。您的 script 元素将始终设置其 src 属性,但其内容取决于服务器的响应。我怀疑它会是错误 404(因为它指的是未找到的元素,这几乎不重复),但它可以有 500 种口味。

我建议按原样调试您的查询(即,如果您使用浏览器或一些脚本化的 HTTP UserAgent 打开 http://www.example.com/?data&callback=%callfunction% feel industrious),看看选择要加载的脚本的逻辑可能有什么问题。

关于javascript - JSONP 和 DOCTYPE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447814/

相关文章:

javascript - 通过跨站点 AJAX 解释 JSONP

javascript - Ionic/Angular $urlRouterProvider.otherwise 问题

javascript - 计算从绿色到红色的颜色值

javascript - AJAX 常规错误处理

ajax - jsonp 数据到 tokenInput (或类似)插件

javascript - 构建 JSONP 请求堆栈

javascript - 更改函数中的全局变量

javascript - Vuejs 2 路由器无法以编程方式工作,但作为路由器链接工作

javascript - ajax 未检测到图像裁剪

javascript - 如何在 ajax 脚本中添加另一个帖子名称/变量