在纯javascript ajax中捕获跨域响应

时间:2014-07-31 13:30:11

标签: javascript ajax

我想在纯javascript ajax中捕获跨域响应,而不是使用jquery或其他外部库。

var xmlhttp, response;

try {
    xmlhttp = new XMLHttpRequest(); 
} catch(e) { 

   try { 
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e2) { 

       try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
}

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4) { 
        if(callback != undefined) { 
              console.log(xmlhttp.responseText);
        }
    }
}

url = "http://xxxx.com/layer.php?callback=callRes";
xmlhttp.open("GET", url, false);
xmlhttp.setRequestHeader("Content-Type",
                    "application/json,application/javascript,text/javascript");
xmlhttp.send();

花了很多时间和谷歌搜索,但没有找到任何解决方案

建议是最受欢迎的,但不是脚本方法只有纯javascript ajax

1 个答案:

答案 0 :(得分:0)

我假设你想在控制台中看到响应。

在致电console.log()之前,您正在检查callback是否存在。在给定的代码段中callback尚未定义,因此这可能是阻止xmlhttp.responseText输出的唯一障碍。

解决方案:移除if (callback != undefined),然后致电console.log(xmlhttp.responseText)