gpt4 book ai didi

JavaScript Ajax URL 'post' PHP 文件未收到数据

转载 作者:行者123 更新时间:2023-12-03 04:39:17 25 4
gpt4 key购买 nike

我想知道您能否帮我解决这个问题?

我希望通过 JavaScript AJAX 方法中的 POST 将可变长度 HTML(或实际上的任何数据)传递到 PHP 文件。

我想在我的整个项目中使用 JavaScript,这样我就可以开始尝试 - 我知道 jQuery 中为 AJAX 提供了很多解决方案,但希望您可以通过普通 JavaScript 帮助我。 :)

我将数据传递到 URL 的“prepare”变量中,如下所示:

ajax("doit.php?preparedOutput=" + prepare);

AJAX 功能:

function ajax(queryURL) {
alert(queryURL); // check the right data is being sent
var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
alert(xhttp.responseText);
output2.value = xhttp.responseText;
result.innerHTML = "<h3>your HTML</h3>" + xhttp.responseText;
}
}
//var encodedQueryURL = encodeURIComponent(queryURL);
xhttp.open("POST", "doit.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//alert(encodedQueryURL); // check the right encoded data is being sent
xhttp.send(queryURL);
}

警报向我显示了应该发送的数据,无论是否经过编码。一切看起来都很好。但我从 PHP 得到的响应是……什么也没有。

<?php
$preparedOutput = $_POST['preparedOutput'];

echo $preparedOutput;
?>

即使我在 if/else block 中使用 isset($preparedOutput),也会触发 else。什么都没有通过。即使我尝试传递不带空格的简单数字或字母(HTML 除外),也不会。显然没有任何内容进入 PHP 文件。

我一直在玩弄 setRequestHeader,尝试各种方法,即“text/html”等。没有任何改变结果。我觉得我错过了这个难题的关键部分!

如果有帮助的话,我的环境是使用 FastCGI 在 IIS7 中启用 PHP - 如果这有什么区别的话。 PHP 可以工作,我之前将 PHP 脚本嵌入到同一页面中,它返回整个页面的 HTML,而不是 preparedOutput 变量中的 HTML,这就是我将其转移到自己的文件中的原因。

谢谢

最佳答案

那是因为你将 url 字符串加倍了。看看:

你这样调用它

ajax("doit.php?preparedOutput=" + prepare);

并且您在 open 中使用的 url 是 "doit.php"

所以你基本上可以调用类似http://whatever/doit/?doit.php?preparedOutput="+prepare之类的东西。

更改为:

ajax("preparedOutput=" + prepare);

关于JavaScript Ajax URL 'post' PHP 文件未收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150214/

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