Pur*_*lot 28 javascript ajax xmlhttprequest
我编写了一个运行良好的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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码运行正常.我可以走过去,我得到readyState == 4和状态== 200但是responseText总是空白.
我收到错误调度的日志错误(在Safari调试中):getProperties,我似乎无法找到引用.
我在本地和远程服务器上运行Safari和Firefox中的代码.
放入浏览器时的URL将返回字符串并提供状态代码200.
我在Mac Widget中向相同的URL写了类似的代码,运行正常但是浏览器中的相同代码永远不会返回结果.
小智 12
问题已解决
在我的情况下,问题是我在url param中使用完整路径执行ajax调用(使用jQuery中的$ .ajax,$ .get或$ .getJSON方法):
但正确的方法是将url的值传递为:
url:"site/cgi-bin/serverApp.php"
有些浏览器不会发生冲突,也不会在一个文本或另一个文本之间产生干扰,但在Firefox 3.6 for Mac OS中,将这条完整路径称为" 跨站点脚本 "......另一方面,在同一浏览器中有以下区别:
http://mydomain.com/site/index.html
并把
http://www.mydomain.com/site/index.html
实际上它是正确的点视图,但大多数实现没有区别,因此解决方案是删除所有指定执行ajax请求的方法中脚本的完整路径的文本和 ....删除任何BASE标记在index.html文件中
base href ="http://mydomain.com/"<---坏主意,删除它!
如果您不删除它,此系统的此版本浏览器可能会收到您的ajax请求,就好像它是一个跨站点请求!
我有同样的问题,但只在Mac OS机器上.问题是Firefox将ajax响应视为"跨站点"调用,在任何其他机器/浏览器中它都能正常工作.我没有找到任何帮助(我认为这是一个firefox实现问题),但我将在服务器端证明下一个代码:
Run Code Online (Sandbox Code Playgroud)header('Content-type: application/json');确保浏览器将数据作为"json数据"获取...
| 归档时间: |
|
| 查看次数: |
100700 次 |
| 最近记录: |