清空XMLHttpRequest中的responseText
我写了一个XMLHttpRequest运行正常,但返回一个空的responseText。
javascript如下:
var anUrl = "http://api.xxx.com/rates/csv/rates.txt"; var myRequest = new XMLHttpRequest(); callAjax(anUrl); function callAjax(url) { myRequest.open("GET", url, true); myRequest.onreadystatechange = responseAjax; myRequest.setRequestHeader("Cache-Control", "no-cache"); myRequest.send(null); } function responseAjax() { if(myRequest.readyState == 4) { if(myRequest.status == 200) { result = myRequest.responseText; alert(result); alert("we made it"); } else { alert( " An error has occurred: " + myRequest.statusText); } } }
代码运行良好。 我可以通过,我得到readyState == 4和状态== 200,但responseText总是空白。
我得到一个日志错误(在Safaridebugging)的错误调度:getProperties,我似乎无法find参考。
我已经在本地和远程服务器上运行Safari和Firefox中的代码。
放入浏览器时的URL将返回string,并给出200的状态代码。
我写了一个类似的代码到Mac Widget中运行正常的同一个URL,但是浏览器中的代码永远不会返回结果。
是http://api.xxx.com/
您的域的一部分? 如果没有,您将被相同的原产地政策阻止。
您可能需要查看以下堆栈溢出文章,了解几种可能的解决方法:
- 如何规避同源政策
问题解决
在我的情况下,问题是我在URL参数中使用完整path进行ajax调用(使用jQuery中的$ .ajax,$ .get或$ .getJSON方法):
但正确的方法是传递url的值为:
url:“site / cgi-bin / serverApp.php”
有些浏览器不会发生冲突,不会在文本或其他文本之间产生任何影响,但是在Firefox 3.6 for Mac OS中,将此完整path称为“ 跨站点脚本 ”…另一件事是,在同一个浏览器中,
http://mydomain.com/site/index.html
并放
http://www.mydomain.com/site/index.html
事实上,这是正确的观点,但大多数实现没有区别,所以解决scheme是删除所有的文本,指定的脚本的完整path在执行ajax请求的方法和 ….删除任何BASE标记在index.html文件中
基地href =“http://mydomain.com/”<—坏主意,删除它!;
如果你不删除它,这个系统的浏览器版本可能会采取你的Ajax请求,如果这是一个跨站请求!
我有同样的问题,但只在Mac OS机器上。 问题在于Firefox将ajax响应视为“跨站点”调用,在任何其他机器/浏览器中都能正常工作。 我没有find任何帮助(我认为这是一个Firefox的实现问题),但我要certificate在服务器端的下一个代码:
header('Content-type: application/json');
确保浏览器获取数据为“json数据”…
浏览器阻止你跨站脚本。
如果url不在您的网域中,那么您需要在服务器端执行此操作,或将其移至您的网域。
这可能不是最好的办法。 但它以某种方式为我工作,所以我要去运行它。
在我的php函数返回数据,在返回行之前的一行,我添加了一个echo语句,回显我想要发送的数据。
现在确定它为什么有效,但它确实。
有类似的问题,你的。 我们所要做的就是使用这里find的document.domain解决scheme:
如何规避同源政策
我们也需要改变Web服务的一面。 使用在这里find的“Access-Control-Allow-Origin”标题:
- 请求的资源上没有“Access-Control-Allow-Origin”标题。 原因'…'因此不被允许访问
- Ajax提交之前的jQuery表单validation
- 有可能通过一些debugging器,如WebKit,FireBug或IE8开发工具debuggingdynamic加载JavaScript?
- 阻止浏览器cachingjQuery AJAX调用结果
- $ .ajax()和$ .get()和$ .load()之间的区别
- 适当的方式发送一个真实性标记与AJAX ..?
- CORS标题'Access-Control-Allow-Origin'缺失
- WebSockets协议vs HTTP
- 等到所有的jQuery Ajax请求完成?