无法获得过滤器的价值。不知道为什么。我做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_table
。date
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_table
。date
DESC,nid DESC limit 0,6
答案 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的解决方案是修改回调函数的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"))