XMLHttpRequest仅适用于IE

时间:2012-02-27 12:46:51

标签: javascript ajax json

我正在使用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();
}

2 个答案:

答案 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。