如何通过AJAX在URL中发送变量?

时间:2011-07-31 06:07:47

标签: php ajax url

我发送的变量如下:

xmlhttp.open("GET","insert-karma.php?pid=<? echo $pid; ?>",true);

AJAX部分似乎不是问题,如果我检查Sript PHP正确回显整数。 (它将网址显示为:insert-karma.php?pid=5)。然而,PHP没有得到变量。 (我试着回声并且它没有显示出对角线)

这是PHP文件:

// Connect to db;

$pid = $_POST['pid'];

$sql="UPDATE Poems SET Karma = Karma + 1 WHERE Pid = '$pid'";

// Disconnect form database;

我做错了什么?如何设法将$pid发送到PHP update-karma.php?

4 个答案:

答案 0 :(得分:2)

尝试$ pid = $ _GET ['pid']

$ pid = $ _REQUEST ['pid'];

答案 1 :(得分:2)

您正在使用GET发送变量,因此在您的php中您必须使用$ _GET变量

$pid = $_GET["pid"];

还要避免在sql查询中直接使用变量。你很容易受到sql注入。

如果使用mysql:

$pid = mysql_real_escape_string($_GET["pid"]);

或者如果您传递的是整数:

$pid = (int)$_GET["pid"];

答案 2 :(得分:0)

这是一个建议,因为你已经得到了答案。在编写JS代码时,尝试使用一些javascript库来帮助您。 我建议jquery

另请阅读GET,POST请求以及何时应该使用它的区别。

答案 3 :(得分:0)

首先你不应该在你的ajax请求中使用PHP它只是让事情变得更复杂而PHP首先用于服务器端脚本 如果你明白使用POST,你应该使用xmlhttp.open(“POST”,“insert-karma ....) 第三,POST和Get之间唯一重要的区别(不是唯一但重要的)是:

可以缓存GET请求

GET请求可以保留在浏览器历史记录中

GET请求可以加入书签

GET请求可以分发&amp;共享

GET请求可以被黑客攻击

所以你不能使用Get For For Safe和危险的行为,如LOGIN OR ......

POST可以处理太长的数据

帖子更安全Cuz它不会被缓存或保存在历史记录中或加入书签

你可以清楚地注意到POST不会显示在浏览器地址栏中,但会显示Get do  'www.anything.com/index.php?bla=bhe'

我希望我在这里帮助!! :)