我正在尝试使用以下JS代码执行原生javascript并请求html页面,为什么它会返回(在Chrome中)以下内容?
XMLHttpRequest无法加载/live-examples/temp.html。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。
我使用的代码如下:
var sendRequest = (function(){
// Private member variables
var readyState = {
UNSENT : 0,
OPENED : 1,
HEADERS_RECIVED : 2,
LOADING : 3,
DONE : 4
}
var status = {
SUCCESS : 200,
NOT_MODIFIED : 304
}
// Private member methods
function getData(callBack){
var xhr = getXhr();
if(!xhr){
console.log('unable to create xhr object.')
return false;
}
// test readyState
if(xhr.readyState !== readyState.DONE) return;
if(xhr.status === status.SUCCESS && xhr.status !== status.NOT_MODIFIED){
callBack(xhr.responseText);
}
}
function getXhr(){
var XMLHttpList = [
function(){ return new XMLHttpRequest(); },
function(){ return ActiveXObject("Msxml2.XMLHTTP"); },
function(){ return ActiveXObject("Microsoft.XMLHTTP"); }
], xhr;
for(var i = 0; i < XMLHttpList.length; i++){
try{
xhr = XMLHttpList[i];
break;
}catch(e){
continue;
}
}
return xhr();
}
return function(url, callBack, postData){
var xhr = getXhr();
if(!xhr) return;
var method = (postData) ? 'POST' : 'GET';
xhr.open(method, url, true);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.onreadystatechange = getData(callBack);
xhr.send(postData);
};
})();
function dealWithResponse(response){
// the response from the xhr request
console.log('success response: ' + response);
}
// cross origin request error.
$(function(){
document.getElementById('MyID').onclick = function(){ sendRequest('/live-examples/temp.html', dealWithResponse, 'GET'); }
});
BODY中的HTML代码如下:
<button id="MyID">I have a button!</button>
我检查了文件&#39; temp.html&#39;确实存在。
我在这段代码中只是试图在我将要出席的演讲中使用原生javascript显示一些简单的ajax调用。
非常感谢提前, 昆顿:)
答案 0 :(得分:0)
如果要使用XMLHTTPRequest对象访问数据,则需要使用HTTP。