【问题标题】:How do I send a variable in a URL through AJAX?如何通过 AJAX 在 URL 中发送变量?
【发布时间】:2011-07-31 06:07:47
【问题描述】:

我正在发送这样的变量:

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

AJAX 部分似乎不是问题,如果我检查脚本 PHP 正确地回显整数。 (它将 url 显示为: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?

【问题讨论】:

    标签: php ajax url


    【解决方案1】:

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

    $pid = $_REQUEST['pid'];

    【讨论】:

    • 谢谢,做到了。为什么 POST 不起作用?只是好奇。谢谢
    • 因为您使用 GET 方法发送变量 xmlhttp.open("GET","insert-karma...as Ibu 说的
    【解决方案2】:

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

    $pid = $_GET["pid"];
    

    同时避免在你的 sql 查询中直接使用你的变量。您将容易受到 sql 注入的攻击。

    如果使用mysql:

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

    或者如果你传递一个整数:

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

    【讨论】:

      【解决方案3】:

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

      GET 请求可以被缓存

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

      GET 请求可以添加书签

      GET 请求可以分发和共享

      GET 请求可能会被黑客入侵

      所以你不能使用 Get 来进行不安全和危险的操作,比如 LOGIN OR ...

      POST 可以处理太长的数据

      帖子更安全,因为它不会被缓存或保存在历史记录或书签中

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

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

      【讨论】:

        【解决方案4】:

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

        另外请阅读 GET、POST 请求的区别以及何时使用。

        【讨论】:

          猜你喜欢
          • 2012-10-07
          • 2014-02-07
          • 2017-10-11
          • 2018-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-21
          • 2019-06-09
          相关资源
          最近更新 更多