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

时间:2017-03-31 21:51:18

标签: javascript php ajax

我想知道你是否能帮助我解决这个问题?

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

我想在我的整个项目中使用JavaScript,所以我可以对它敏锐 - 我知道jQuery for AJAX提供了很多解决方案,但希望你可以通过vanilla 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块中使用了isset($ preparedOutput),也会触发else。什么都没有通过。即使我尝试传递简单的数字或字母而没有空格,除了HTML之外。什么都没有显示PHP文件。

我一直在玩setRequestHeader,尝试所有种类,即“text / html”等。没有什么能改变结果。我觉得我在这里错过了一个关键部分!

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

由于

1 个答案:

答案 0 :(得分:1)

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

你通过

来调用它
ajax("doit.php?preparedOutput=" + prepare);

您在open中使用的网址是"doit.php"

所以你基本上打电话给http://whatever/doit/?doit.php?preparedOutput=" + prepare

更改为:

ajax("preparedOutput=" + prepare);