如何从另一个php文件中的ajax获取变量

时间:2016-04-11 14:16:26

标签: javascript php jquery ajax

问题是,当我点击“提交数据”按钮时,我得到了响应(这是正确的),但是当我点击“转到php文件”链接(这是与以前相同的php文件)时,我得到了未定义的索引:firstname和Undefined index:lastname错误。我该如何解决?

这是我的代码:

<html>
<head>
    <script>
        function ajax_post(){
            // Create our XMLHttpRequest object
            var hr = new XMLHttpRequest();
            // Create some variables we need to send to our PHP file
            var url = "my_parse_file.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);
            // 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...";
        }
    </script>
</head>
<body>
    <h2>Ajax Post to PHP and Get Return Data</h2>
    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>
    <a href="my_parse_file.php">go to the php file</a>
</body>

和php文件

<?php 

echo 'Thank you '. $_POST['firstname'] . ' ' . $_POST['lastname'] . ', says the PHP file';

?>

3 个答案:

答案 0 :(得分:0)

因为两者都有不同的请求:

在使用AJAX传递参数firstnamelastname时。您必须使用URL请求在GET中传递相同内容。

转到php文件

<?php 

echo 'Thank you '. $_REQUEST['firstname'] . ' ' . $_REQUEST['lastname'] . ', says the PHP file';

?>

输出

感谢abc xyz,PHP文件

它适用于Submit buttonHyperlink

答案 1 :(得分:0)

通过单击链接,您的浏览器不会发送POST请求,而是向服务器端发送GET请求。这就是为什么全局数组$ _POST不包含您尝试在PHP文件中检索的元素。错误消息指出$ _POST数组中没有这样的元素,如&#34; firstname&#34;和&#34;姓氏&#34;。 建议添加一个检查数组元素是否存在的方式:

<?php
    if (isset($_POST['firstname']) && isset($_POST['lastname'])) {
        echo 'Thank you '. $_POST['firstname'] . ' ' . $_POST['lastname'] . ', says the PHP file';
    } else {
        echo 'Nothing to say';
    }

答案 2 :(得分:0)

感谢R J的解释。现在我修复它并正常工作。

但我很担心,因为我只将此代码用于培训。在我的主要问题中,我需要通过ajax将真实对象(不是字符串等)发送到我的php网站,所以我无法将其添加到网址,是吗?