通过AJAX将值从JavaScript发布到PHP,无需jQuery
我试图发送一个JavaScript变量,由PHP在服务器端处理,然后回显结果。我的ajax请求导致通过AJAX将值从JavaScript发布到PHP,无需jQuery,javascript,php,ajax,post,Javascript,Php,Ajax,Post,我试图发送一个JavaScript变量,由PHP在服务器端处理,然后回显结果。我的ajax请求导致readyState==4和status==200,但PHP一直回显空数组/值 我很确定这是因为我的Ajax调用发送了一个空请求,但我尝试的一切都不起作用,所以我可能在这里出了问题 JS(来自index.html): PHP(来自test.PHP): 我最后一次尝试是更改request.send(valueToSend)
readyState==4
和status==200
,但PHP一直回显空数组/值
我很确定这是因为我的Ajax调用发送了一个空请求,但我尝试的一切都不起作用,所以我可能在这里出了问题
JS(来自index.html
):
PHP(来自test.PHP
):
我最后一次尝试是更改request.send(valueToSend)使用.send(encodeURI('name='+valueToSend))但是它只是使ajax调用将页面位置重定向到一个不存在的位置
我做错了什么?您的代码中几乎没有什么地方出错,例如:
- 即使您定义了
send\u ajax()
函数,也没有在代码中的任何地方调用它
- 使用
POST
请求,您需要随请求一起发送HTTP头setRequestHeader()
,如下所示:
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
var valueToSend = Math.random();
var request = false;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
function send_ajax() {
if (request) {
request.open('POST', 'test.php', true);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
console.log(request.responseText);
}
}
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
}
}
send_ajax();
echo$_POST['name']无效,因为这里未定义name
。您的send()
方法调用应该如下所示:
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
var valueToSend = Math.random();
var request = false;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
function send_ajax() {
if (request) {
request.open('POST', 'test.php', true);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
console.log(request.responseText);
}
}
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
}
}
send_ajax();
因此,完整的JavaScript代码如下所示:
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
var valueToSend = Math.random();
var request = false;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
function send_ajax() {
if (request) {
request.open('POST', 'test.php', true);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
console.log(request.responseText);
}
}
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("name="+valueToSend);
}
}
send_ajax();
test.php的路径正确吗?请仔细检查:是的,它是正确的。哦,我的上帝。。。我完全忘记了setRequestHeader()
方法。。。现在工作很好。非常感谢。