如何通过Javascript测试是否正确发送POST请求?

时间:2010-06-30 05:45:56

标签: php javascript post bookmarklet

这是特殊情况:我正在使用bookmarklet来调用.js,它将POST请求发送到我服务器上的PHP文件。这是.js文件中的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);

以下是我在PHP中所做的事情。但是尽可能地尝试,我无法弄清楚如何将某些内容返回到.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请求的时间。显然,编写将数据发送到MySQL的bookmarklet是一种黑色艺术;)

2 个答案:

答案 0 :(得分:1)

firebug用于firefox。

答案 1 :(得分:0)

测试你正确地做了,我可能会在Firefox上使用Firebug或在Chrome上使用Dev Tools;使用其中任何一个,您都可以看到发送或接收的实际HTTP数据。但我认为你真正的问题是,为什么POST不工作? (您可以考虑更新问题标题。)

答案可能是您没有设置内容类型。 POST是通用的,您可以发布任何。在您的情况下,您要发布URL编码数据,因此请尝试添加:

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

...在open电话之后。一些示例herehere