希望有人能在这里发现问题,我已经在这里待了几个小时。
我有一个简单的表格
<div class="ibox-content">
First name:<br>
<input type="text" name="firstname" id="firstname">
<br>
Last name:<br>
<input type="text" name="lastname" id="lastname">
<button class="btn btn-white" onclick="ajax_post();" type="submit">Test</button>
</div>
哪个调用一个非常简单的php文件
<?php
echo $_POST['first_name'];
echo $_POST['last_name'];
?>
通过Ajax函数
function ajax_post(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "result.php";
var fn = document.getElementById("firstname").value;
var ln = document.getElementById("lastname").value;
var vars = "first_name="+fn+"&last_name="+ln;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
document.getElementById("status").innerHTML = "processing...";
}
我一直在&#34;未定义索引&#34;从php文件中返回每个var。 检查fiddler和wireshark,我可以看到变量被发布。
为了测试,我给了表单一个post动作,我可以看到php正确响应。
请帮忙
答案 0 :(得分:0)
如果您尝试`var_dump($ _ POST)`,您会注意到表单字段的名称与`$ _POST`数组相对应。所以如果你保持不变,你的代码应该可以工作。
[编辑]
再看一下你的JavaScript,看起来当你读取输入字段的值并将它们连接起来并存储在你的`vars`变量中时,你就不会对它们做任何事情了,特别是你没有将它们发布到你的PHP文件中。
答案 1 :(得分:0)
最后解决了它,问题是我的url被定义为result.php ...我正在使用htaccess虽然照看文件扩展名,但是将url更改为结果并且它有效。浪费了这么多时间!!!