我正在使用XMLHttpRequest对象进行我的AJAX调用,这些调用在浏览器中运行良好,并且我创建了一个基于请求类型和参数等返回JSON的回调处理程序。
但我现在正在集成一个外部RESTful API来返回一个JSON字符串,由于某种原因它只适用于IE(在IE 8中测试)。使用fiddler 2我已经确定API正在返回正确的数据。
我得到的XMLHttpRequest.readyState为4,但XMLHttpRequest.status仅为Chrome,Safari和FF返回0。我读到有时当使用本地服务器(测试服务器)时,你总是得到零状态,所以我绕过了我的状态检查但是仍然有一个空字符串用于XMLHttpRequest.responseText。
function ajaxRequest(requestType,url) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
switch (requestType)
{
case 5:
//Home postcode search
showAddresses("home", xmlhttp.responseText);
break;
}
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
答案 0 :(得分:0)
您应该升级到jQuery,因为它将处理几乎所有浏览器的此请求。但是如果你真的想知道如何在所有浏览器中使用XMLHttpRequest,这里有一些似乎可以解决问题的代码:https://github.com/ilinsky/xmlhttprequest/blob/master/XMLHttpRequest.js
或者,只需选择jQuery的实现。
http://api.jquery.com/category/ajax/
希望这有帮助。
答案 1 :(得分:0)
我的问题是我使用的是外部API,而xmlHttpRequest只允许您在同一台服务器上进行调用。我将数据调用移动到我的服务器代码中,并从我的回调处理页面获得响应,而不是直接进入API。