【问题标题】:Cannot read POST array from AJAX call in external PHP file无法从外部 PHP 文件中的 AJAX 调用读取 POST 数组
【发布时间】:2014-04-21 06:52:30
【问题描述】:

我已经尝试了所有可以通过 Google 搜索的解决方案,但我无法从外部 PHP 文件中的 POST 数组中读取数据。这是文本字段的 HTML。

    <form>
    <textarea id="comment_text_area" name="comments" rows="5" cols="40">     
    </textarea>
    <label for="comment_text_area">Comment:</label>
    <br>
    <input type="submit" name="submit" value="Submit" onclick="SaveComments()">
    </form>

... 以及进行 AJAX 调用的 JS 函数

function save()
{
    var data = document.getElementById("comment_text_area");
    var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    xhr.open('POST', 'save_comments.php', true);
    xhr.onreadystatechange = function()
    {
        if (xhr.readyState == 4 && xhr.status == 200)
        {
            alert("Comments saved!");
        }
    }
    xhr.send(data);
} 

... 和 PHP 文件

    <?php
    if(isset($_POST['comments']))
    {
    $data = htmlentities($_POST['comments']);
    $file = "comments.txt";
    file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
    }
    else
    {
    $data = "empty";
    $file = "comments.txt";
    file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
    }
    ?>

我所知道的有效: AJAX 调用成功完成,脚本正在运行并且正在编写“空”。

我尝试过的事情:

  1. 我读到事件侦听器函数应在生成 HTML 元素之前附加到它们,这似乎违反直觉。没有做任何改变。

  2. 使用

    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    

没用。而且,根据我为此所做的研究,这难道不应该只对 GET 调用有必要吗? (我需要使用 POST)

  1. 使 POST 调用同步。没有改变。

我知道您传递的元素的名称必须是您在 PHP 脚本中所依赖的名称,但它不起作用。我不想设置表单 action="" 因为我不想重定向,这就是我要通过 AJAX 的原因。 最后,我注意到,当我点击提交时,它会改变 URL,这是我对 GET 的期望。那是 GET 特定的,对吧?我清楚地将其标记为 POST。

有人看到我做错了吗?

附: - 请,如果它是在 JS 方面,请不要使用 jQuery。到目前为止,我一直在避免它,我正在努力保持这种状态。

【问题讨论】:

    标签: javascript php html ajax post


    【解决方案1】:

    你需要一个变量来传递请求,而不仅仅是值

    xhr.send("comments="+data);
    

    这样在服务器端就可以通过参数名称检索数据了。

    【讨论】:

    • 非常感谢。像魅力一样工作。我不知道为什么在互联网上很难找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多