【发布时间】:2017-04-12 16:37:04
【问题描述】:
我是 ajax 新手,我正在尝试将 html 页面数据发送到 php 而不重新加载当前页面。当我点击提交按钮时,它只会闪烁“处理中...”
html 文件
<!DOCTYPE html>
<head>
<script type="text/javascript">
function ajax_post(){
var hr = new XMLHttpRequest();
var url = "simple.php";
var fn = document.getElementById("first_name").value;
var ln = document.getElementById("last_name").value;
var vars = "firstname="+fn+"&lastname="+ln;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
hr.send(vars);
document.getElementById("status").innerHTML = "processing...";
}
</script>
</head>
<body>
First Name: <input id="first_name" name="first_name" type="text"> <br><br>
Last Name: <input id="last_name" name="last_name" type="text"> <br><br>
<input name="myBtn" type="submit" value="Submit Data" onclick="ajax_post();"> <br><br>
<div id="status"></div>
</body>
</html>`
PHP 文件
<?php
echo 'Thank you '. $_POST['firstname'] . ' ' . $_POST['lastname'] . ', says the PHP file';
?>
编辑 1
我在 onreadystatechange 中添加了警报消息。它分别显示三个警报消息 2,3,4。
alert(hr.readyState);
【问题讨论】:
-
“不工作”是什么意思?控制台错误? PHP 错误信息? - 你还有一个
</script>在<head>之后浮动 -
在
onreadystatechange函数(if 上方)中尝试alert()/console.debug()hr.readyState和hr.status,看看输出是什么。 -
</script>我可以在头部看到这个结束的第一个元素。 -
嗨@lvar,我在 onreadystatechange 中添加了警报消息 {alert(hr.readyState);}。它分别显示三个警报消息 2,3,4。
-
@Sparta 好的,但我认为
hr.status有更重要的信息。尝试输出它。
标签: javascript php ajax