我想知道你是否能帮助我解决这个问题?
我希望在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,这就是我将其移动到自己的文件的原因。
由于
答案 0 :(得分:1)
那是因为你把url字符串加倍了。看看:
你通过
来调用它ajax("doit.php?preparedOutput=" + prepare);
您在open中使用的网址是"doit.php"
所以你基本上打电话给http://whatever/doit/?doit.php?preparedOutput=" + prepare
。
更改为:
ajax("preparedOutput=" + prepare);