JSONP and DOCTYPE Errors
JSONP and DOCTYPE Errors
我遇到了一个奇怪的问题。
我正在使用AJAX与服务器进行通信。(我正在localhost
上运行我的web应用程序)。服务器位于例如http://www.example.com
上
为了绕过同源策略,我使用了JSONP。我动态地创建一个<script>
标记,并从服务器加载数据。
到目前为止还不错。
然后我决定将我的web应用程序上传到这个子域:http://m.example.com
那是我遇到疯狂错误的时候。有时页面加载,有时不加载。当它没有加载时,Firebug会抛出一个DOCTYPE
错误。
我做了一些研究,发现了这篇stackoverflow帖子:firebug在doctype中返回语法错误?
在此链接中引用答案:
这通常是因为您将HTML文档作为脚本加载。这通常是由
<script src=""></script>
(即指向当前HTML文档的相对URI)或指向404错误的脚本之一引起的。
很有用的东西。基于所有这些,我从上面得出的结论是,每当我的服务器响应缓慢时,<script>
标记的src
属性都是null。由于这抛出了一个404 error
,我在Firebug中得到了一个DOCTYPE
错误。每当我的服务器快速响应时,就不会出现任何问题,一切都很好。
我该如何解决这个问题?我可以手动暂停或其他什么,但这并不是一个万无一失的优雅解决方案。
有人帮忙吗?
编辑:
以下是一些代码:
此函数用于动态创建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%
),看看选择要加载的脚本的逻辑可能有什么问题。
- errors with Javascript try catch
- $(document).height和$(window).heaght都返回相同的值-使用的是正确的doctype
- http://errors.angularjs.org/1.4.1/ngRepeat/dupes
- ng路由injectore:modulerr中出错[$injector:modulerr]http://errors.a
- Bad Errors for PropType (React)
- Do JS Reference Errors停止运行时线程执行
- 设置doctype会破坏我的css和javascript
- 将所有访问过的网站颜色重置为所有最新浏览器和所有doctype(xhtml,html,html5)的默认颜色css设置
- 当使用严格的DOCTyPE定义时,jQuery可拖动性得到扩展
- 把手包裹<!DOCTYPE html>
- 未捕获的语法错误:意外的标记<在<!DOCTYPE html>
- Javascript DOM errors
- 定义DOCTYPE时XSLT和javascript的怪异行为
- 中心未定义-<!DOCTYPE html>错误
- Chrome javascript errors
- 当使用doctype html时,skrollr在ipad上不起作用
- JSONP and DOCTYPE Errors
- Javascript在<!doctype html>以正确的格式插入时不起作用
- JSON Stringify & AJAX parse errors
- 由于以下原因,无法实例化模块 myApp:错误:[$injector:nomod] http://errors.angu