php - 我的 Ajax 没有将值传递到 php 页面

标签 php jquery mysql ajax

我有连接到 MySQL 数据库的 phppage.php:

<?php

    $list = 'A,B,C';

    $cxn   = mysqli_connect("localhost", $username, $password, $database) or die("Didn't connect");        
    $query = "SELECT * FROM Questions3 WHERE 1 IN ($list) ORDER BY RAND() LIMIT 10";

    $result = mysqli_query($cxn,$query) or die ("Didn't work");

    while( $row = mysqli_fetch_assoc($result) )
    {
        echo "<div>";
        echo $row['columnname'];
        echo "</div>";
    }

这会提取 10 个随机数据库条目,其中 A、B 或 C 列的值为“1”。

该页面本身运行良好。但我实际上需要使用 AJAX(我是新手)从另一个页面使用复选框来调用它。所以而不是

$list = 'A,B,C' 

我需要

$list = "data1"

我的主页上的 jQuery 位置是:

$(document).ready(function(){
  $("button").click(function(e){
    e.preventDefault();
    var data1 = 'A,B,C';
    $.ajax({url:"phppage.php", type:"POST", data:data1, success:function(result){
      $("#display").html(result);
    }});
  });
})

html 是:

<button>Press</button>
<div id="display">Data should show here</div>    

(显然在这个简化版本中我​​忽略了复选框)。

但是,当我按下按钮时,显示“不起作用”。因此,我的 JQuery 中的“data1”不会转移为 PHP 中的 $list。

我的 AJAX 有什么问题:如何传输“data1”字符串?

最佳答案

问题在于您在 JavaScript 中发送数据的方式:

// data1 is a string
data:data1

data 键需要键值对,因此您必须执行以下操作:

data: {'mydata': data1}

然后您将在 $_POST['mydata'] 中获得 php 中的字符串。

当您使用发布的值/用户输入时,您应该确保通过在输入变量上使用准备好的语句或 mysqli_real_escape_string() 来避免 SQL 注入(inject)。

还要注意,当你在mysql中使用IN时,你想要使用的每个值都必须单独绑定(bind),当你使用准备好的语句时,你不能绑定(bind)范围。

最后,您要检查数字 1 还是有名为 1 的列?如果是后者,则需要用反引号引用:

SELECT * FROM Questions3 WHERE `1` IN (?,?,?) ORDER BY RAND() LIMIT 10
                               ^^^ here

关于php - 我的 Ajax 没有将值传递到 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410420/

相关文章:

php - 如何防止 CronJob 创建日志文件?

php - 在 Symfony 中访问 wordpress 博客

jquery - 将焦点设置到输入字段

javascript - 从 jQuery 搜索脚本中删除 on keyup

mysql - 为什么 MAX 在索引中间的列上工作

php - 使用 php 以表格形式回显 mysql 查询结果

php - 仅在插件页面 WordPress 上显示样式表

javascript - 单击 html/javascript 中的按钮时更改图像

mysql - 当我们使用嵌套查询 for max(cgpa) 时,我们可以使用 select * 吗

python - 连接到mysql