Javascript JSONP和DOCTYPE错误

Javascript JSONP和DOCTYPE错误,javascript,ajax,jsonp,xml-rpc,doctype,Javascript,Ajax,Jsonp,Xml Rpc,Doctype,我遇到了一个奇怪的问题 我正在使用AJAX与服务器通信。(我正在localhost上运行我的web应用程序)。 服务器位于,例如,http://www.example.com 为了绕过同源策略,我使用了JSONP。我动态创建一个标记并从服务器加载数据 到目前为止还不错 然后我决定将我的web应用程序上载到此子域:http://m.example.com 那就是我遇到疯狂错误的时候。有时页面加载,有时不加载。当它没有加载时,Firebug抛出一个DOCTYPE错误 我做了一些调查,发现了这个帖子:

我遇到了一个奇怪的问题

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

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

到目前为止还不错

然后我决定将我的web应用程序上载到此子域:
http://m.example.com

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

我做了一些调查,发现了这个帖子:

在此链接中引用答案:

这通常是因为您正在将HTML文档作为脚本加载。这通常是由
(即指向当前、HTML、文档的相对URI)或指向404错误的脚本之一引起的

非常有用的东西。基于以上所述,我得出结论,每当我的服务器响应缓慢时,
标记的
src
属性为空。因为它抛出了一个
404错误
,所以我在Firebug中得到了一个
DOCTYPE
错误。每当我的服务器快速响应时,都不会出现任何问题,一切正常

我如何解决这个问题?我可以设置一个手动超时或其他什么,但这并不是一个简单而优雅的解决方案

有人帮忙吗

编辑: 这里有一些代码:

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

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://www.example.com/?data&callback=%callfunction%
使用浏览器或脚本化HTTP用户代理(如果您觉得很勤奋的话),查看选择要加载的脚本的逻辑可能有什么问题。

您需要提供某种代码。解决什么问题?如果要解决
src
null
,请在插入脚本标记之前添加
null
检查。如果你想“捕捉”错误,超时是最好的选择。我已经编辑了我的问题,并包含了当前用于从服务器检索JSONP数据的代码。谢谢嗨,马特!谢谢你的意见。你能给我一个小的代码示例吗?如何检查
src
是否为null?什么时候调用appendScriptToHead()函数?Hi@raina77wow。我明白你的意思。我试着打开
http://www.example.com/?data&callback=%callfunction%
直接在我的浏览器中。它返回一个JSONP字符串。但是服务器的响应不同。有时它会立即打开,有时需要一段时间。如何在代码中绕过这种不确定性?我建议使用所描述的方法。不过,不需要定义额外的变量:只需检查要加载的函数即可。