大家好日子。我有一个流动的问题。
我有2个域名。在一个域上,我向另一个域发送ajax帖子并期待一些结果。问题是响应始终为空。如果我检查网络选项卡请求看起来没问题(发布数据很好),它没有收到任何错误,它结束(我在句柄响应函数上发出警报以检查响应是什么)。我尝试向随机域(例如example.com)发送请求,看看我是否得到任何东西。答案是一样的......没有。
这是我使用的脚本:
function sendReqPost(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
// set type accordingly to anticipated content type
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
//http_request.onreadystatechange = handleResponseAccept;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
//parameters is a global variable with the post data.
http_request.send(parameters);
}
我仔细检查了脚本中的所有内容...我还在请求的php页面中插入了回声,看看我是否得到了任何东西。无论我做什么,回答都是空洞的。 附:在另一个域上,ajax脚本运行正常。完全一样。
答案 0 :(得分:4)
我有2个域名。在一个域上,我向另一个域发送一个ajax帖子并期待一些结果。
有你的问题。这是因为JavaScript中的同源策略。这就是为什么......
...在另一个域上,ajax脚本工作正常。
虽然有一些解决方法,称为Cross Domain Ajax。
根据您的需求,由于您显然需要HTML而不是JSON,我建议使用一个小的PHP脚本来从其他域获取内容并将其转发到您的客户端。这将被称为 Ajax代理。
答案 1 :(得分:0)
我没有看到您的http_request.responseText
,它会在请求网址中返回echo
的内容。
所以尝试添加:
http_request.onreadystatechange = function () {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
alert("An error occurred: "+ http_request.statusText);
}
}
};
在:
//parameters is a global variable with the post data.
看看它是否有效。