2010-06-30 131 views
0

以下是特定的情況:我使用小書籤來調用向服務器上的PHP文件發送POST請求的.js文件。以下是.js文件中的POST請求:如何測試以查看我是否通過Javascript正確發送POST請求?

var snd = ("qu=" + encodeURIComponent(t) + "&dl=" + encodeURIComponent(dl) + "&dt=" + encodeURIComponent(dt)); 


xr = new XMLHttpRequest(); 
xr.open("POST", "http://quotebook.us/s/process2.php",true); 
xr.onreadystatechange=function() { 
    if (xr.readyState==4) { 
    var xmldoc = xr.responseText; 
window.alert(xr.responseText); 
} 
} 

xr.send(snd); 

而下面是我在做的事情。但是儘可能地嘗試一下,我無法弄清楚如何將某些東西放回到.js文件中,以便它可以將其顯示在警報中(因此,我可以確認它是首先發送數據)。

<?php 

if ($_SERVER['REQUEST_METHOD'] != 'POST') { 
    echo "This page is not for viewing"; 
    exit; 
} 
$qo = $_POST["qu"]; 
$dl = $_POST["dl"]; 
$dt = $_POST["dt"]; 

echo "First parm: $qo, second param: $dl, third param: $dt"; 
?> 

最後,我想利用這些變量,並將其寫入到MySQL數據庫,但我每天至少遠離學習如何做到這一點...

在這個過程中任何幫助非常歡迎,我有一段時間找到任何有關處理POST請求的信息,而這些POST請求不是由用戶表單發送的。顯然編寫將數據發送到MySQL的小書籤是一種黑色藝術;)

回答

0

測試你做得對,我可能會在Firefox上使用Firebug或在Chrome上使用Dev Tools;與任一,你可以看到實際的HTTP數據發送或接收。但我認爲你真正的問題是,爲什麼不是POST的工作? (您可能會考慮更新您的問題標題。)

而答案可能是您沒有設置內容類型。 POST是通用的,你可以發佈任何東西。在你的情況,您發佈的URL編碼數據,所以儘量增加:

xr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

...您的通話open後。一些示例herehere

+0

好的,謝謝T.J.,我會試試看。老實說,我試圖在一個問題中提出兩個問題 - 我將首先嚐試使用Firebug來查看我是否可以確認要發送的數據,但我並不知道我可以這麼做,並且測試它是我之所以寫這個PHP的原因呢。 如果數據正在發送,那麼我將繼續努力讓PHP文件寫入數據庫。我將添加內容類型到.js。 感謝 ps。對於這種咒罵的道歉......沒有意識到我有一個。 – 2010-06-30 07:07:36

+0

@Jason:在Firebug中,它是「Net」標籤。並且不用擔心。歡迎來到StackOverflow! – 2010-06-30 07:26:54