无法从AJAX获取POST值

时间:2017-03-28 20:33:09

标签: php jquery ajax

无法获得过滤器的价值。不知道为什么。我做AJAX错了吗? 为了记录,我是ajax的新手并且看了很多地方,许多人没有得到同样问题的真实答案。

JQUERY:index.php

$(document).ready(function(){
    $.ajax({
        url: 'news.php',
        type: "POST",
        data: {filter:'some value'},
    });
});

HTML:index.php

<div>
    <div>
        <? include($_SERVER['DOCUMENT_ROOT']."/news/news.php"); ?>
    </div>
</div>

PHP:news.php

$sbFilter = $_POST['filter'];
echo "select* from test_table where status='3'and ('". $sbFilter."') ORDER BY  `test_table`.`date` DESC, nid DESC   limit 0 , 6"

控制台日志:

警告:mysql_query()[function.mysql-query]:拒绝用户访问&#39;&#39; localhost&#39; ( /home/news/news.php 36 行上使用密码:否)
警告:mysql_query()[function.mysql-query]:无法在 /home/news/news.php 行建立指向服务器的链接36
//这是我的回声 从test_table中选择*,其中status =&#39; 3&#39;并按&lt;&gt; 1和(&#39;某些值&#39;)ORDER BY test_tabledate DESC,nid DESC限制0,6 警告:mysql_query()[function.mysql-query]:拒绝用户访问&#39;&#39; localhost&#39; ( /home/news/news.php 42 行上使用密码:否)
警告:mysql_query()[function.mysql-query]:无法在/home/news/news.php中建立指向服务器的链接

在页面上,我得到:

从test_table中选择*,其中status =&#39; 3&#39;和(&#39;&#39;)ORDER BY test_tabledate DESC,nid DESC limit 0,6

3 个答案:

答案 0 :(得分:0)

您可能没有找到正确的位置来查看您的php代码是否返回了正确的值。您的AJAX请求仅询问数据,但不对其执行任何操作,您不会将其保存在变量中,在回调函数中使用它或修改您的网页。

您可以执行以下操作:

$(document).ready(function(){
    $.ajax({
        url: 'news.php',
        type: "POST",
        data: {filter:'some value'},
    }).done(function(data) {
         // Do something with your data here, say output to console
         console.log(data);
    });
});

这只会将服务器输出输出到控制台,您将不得不做其他事情才能看到您网页的变化。你在这里做什么取决于你和你想要看到的东西。

您应该能够在您使用的任何浏览器的网络选项卡上查看服务器响应。

至于你的问题更新:

首先,你应该使用mysqli函数,而不是mysql as they are deprecated 在任何情况下,您都需要创建一个连接对象,显然您没有使用警告错误(see here for an example of both these points)。 最重要的是,您没有对输入进行消毒或使用准备好的语句(有关这些语句的示例,请参见最后一个链接)。如果你不这样做,你就可以自己打开SQL注入。

对于没有任何更改的网页,您有两个问题:

  1. 您需要让JS对服务器输出执行某些操作。
  2. 您没有正确使用mysqli来执行查询。
  3. 1的解决方案是修改回调函数的console.log部分以修改网页 2的解决方案是正确使用MySQL php界面 重申一下,请查看准备好的陈述并重新制定您的疑问,它们非常重要,并且是一个非常简单的元素,可以实现相对较大的安全性提升。

答案 1 :(得分:0)

ajax将post变量发送到php脚本,php脚本确实回显了值,但是你没有使用ajax捕获输出以将其显示在屏幕上。尝试添加到ajax

$(document).ready(function () {
        $.ajax({
            url: 'news.php',
            type: "POST",
            data: {filter: 'some value'}
        }).done(function (data) {
            alert(data);
        });
    });

答案 2 :(得分:0)

您没有看到它,因为您将数据作为JSON发送。这就是你的$ _POST全局为空的原因,访问你需要做的JSON发送的POST数据:

json_decode(file_get_contents("php://input"))