从Ajax发布到PHP时未定义的索引

时间:2015-03-11 13:56:21

标签: php ajax

希望有人能在这里发现问题,我已经在这里待了几个小时。

我有一个简单的表格

    <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正确响应。

请帮忙

2 个答案:

答案 0 :(得分:0)

如果您尝试`var_dump($ _ POST)`,您会注意到表单字段的名称与`$ _POST`数组相对应。所以如果你保持不变,你的代码应该可以工作。

[编辑]
再看一下你的JavaScript,看起来当你读取输入字段的值并将它们连接起来并存储在你的`vars`变量中时,你就不会对它们做任何事情了,特别是你没有将它们发布到你的PHP文件中。

答案 1 :(得分:0)

最后解决了它,问题是我的url被定义为result.php ...我正在使用htaccess虽然照看文件扩展名,但是将url更改为结果并且它有效。浪费了这么多时间!!!