我正在尝试使用Chrome中的JavaScript XHR(最新版)对PHP页面进行简单的发布。我收到错误 - 具体来说,我调用的test.php页面(与我的JS代码在同一文件夹中,本地)显示为失败的http响应。 Chrome开发者工具显示为“无法加载响应数据'。
”test.php的
<?php
echo 'this string should return';
?>
ajax.js
createXHR: function () {
if (typeof XMLHttpRequest !== 'undefined') {
return new XMLHttpRequest();
} else if (typeof ActiveXObject !== 'undefined') {
if (typeof arguments.callee.activeXString !== 'string') {
var versions = ['MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0',
'MSXML2.XMLHttp'],
i,
len;
for (i = 0, len = versions.length; i < len; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex) {
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error('No XHR object available.');
}
},
var xhr = AJAX.createXHR();
/**
* @event onreadystatechange
* @description DOM Level 0 event fired when readyState property is changed
*/
xhr.onreadystatechange = function () {
/** @param {Number} readyState 0 - Uninitialized, 1- Open, 2- Sent, 3- Receiving, 4- Complete */
if (xhr.readyState === 4) {
console.log(xhr.status); //prints 0
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
AJAX.success(xhr.responseText);
} else {
//fail
AJAX.fail();
}
}
};
xhr.open('post', 'test.php', true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('name=myname&email=myemail');
我可以获取此页面,因此我绝对可以看到相同来源的页面,但POST似乎无法正常工作。我已设置Content-Type,将async设置为true,将方法设置为post,文件名正确。我尝试在我的php文件中使用return,以及print_r和echo - 没有骰子。
为什么答案根本没有通过?它刚刚通过readyState = 4 = Complete,但xhr.status为0(零)。想法?
编辑:
我正在使用localhost,使用netbeans运行。
http://localhost:8383/Coding%20Practice/public_html/index.html
test.php位于http://localhost:8383/Coding%20Practice/public_html/test.php
答案 0 :(得分:0)
从netbeans运行本地文件不是服务器。我认为它的作用就像一台服务器,但事实并非如此。通过wamp运行此代码工作正常。