gpt4 book ai didi

javascript - 无法从外部 PHP 文件中的 AJAX 调用读取 POST 数组

转载 作者:行者123 更新时间:2023-11-28 03:23:59 25 4
gpt4 key购买 nike

我已经尝试了所有可以通过谷歌搜索的解决方案,但我无法从外部 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 元素之前附加到 HTML 元素,这似乎有悖常理。没有改变。

  2. 使用

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

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

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

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

有没有人看到我做错了什么?

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

最佳答案

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

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

因此在服务器端您可以通过参数名称检索数据。

关于javascript - 无法从外部 PHP 文件中的 AJAX 调用读取 POST 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com