2017-03-31 21 views
0

我在想,如果你能幫助我這個問題,請在收到的?JavaScript的阿賈克斯網址「後」的數據不會被PHP文件

我期待可變長度HTML(或事實上任何數據)傳遞給在JavaScript AJAX方法通過POST的PHP文件。

我想用JavaScript來我的整個項目,所以我可以砍它我的牙齒 - 我知道的jQuery對AJAX提供了很多解決方案,但希望你可以通過JavaScript的香草幫助我。 :)

我傳遞數據的「準備」變量的網址如下:

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而不是在preparedOutput變量的HTML,這就是爲什麼我把它轉移到它自己的文件。

感謝

+0

http://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest – 2017-03-31 21:56:34

回答

1

那是因爲你一倍的URL字符串。請看:

您可以通過

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

叫吧,你在公開使用的網址"doit.php"

所以你基本上調用像http://whatever/doit/?doit.php?preparedOutput=" + prepare

更改爲:

ajax("preparedOutput=" + prepare); 
+0

你的魔法!我剛剛開始在YouTube上觀看「迴歸基礎」視頻,因爲我在智慧的結尾。你是個明星。 –

+0

這是一個有點exagerated:d如果你請接受的答案,感謝它是有用的。 :) –

+1

只是真正開心:) –