您好社区,我真正需要做的是通过Ajax使用onchange()函数从数据库中进行选择。然后将结果返回给客户端。我使用Ajax将信息发送到服务器端,但是我在使用where条件
返回时遇到问题//这是html页面
<body style="font-family:arial bold; ">
<div style="text-align:left; padding:1%; font-family:Arial bold; color:#cccccc;font-size:40px;"> Select</div>
<select class="form-control" id="color" name="color" >
<option >Please select an option</option>
<option> Red</option>
<option >Yellow</option>
<option >white</option>
<option >Black</option>
<option >Violet</option>
</select>
<br/>
//this is where the output will be displayed with parameter (res);
<div id="dis"></div>
</body>
//这是script.js
$(function(){
$('#color').on('change', function()
{
var selt= this.value ;
d = $('#color').val();
alert(d);
$.ajax({
url: "ajax-cart.php",
method: "POST",
data: {
request:"select",
selt:selt
}
}).done(function(res) {
$('#dis').val(res) ;
console.log(res);
});
});
//这是ajax cart.php
<?php// START THE SESSION
session_start();// CONFIGURATION
require("db.php");
// PROCESS REQUESTS
switch ($_POST['request']) {
// THIS PART is for the select button
case "select":
require("db.php");
$conn = new mysqli($dbServername, $dbUsername, $dbPassword, $dbName );
$val = $_POST['selt'];
$data = $conn->query("SELECT * FROM `goods` where color = '.$val.' LiMIT 4");
echo Json_encode($data);
break;
这是控制台结果{“ current_field”:null,“ field_count”:null,“ lengths”:null,“ num_rows”:null,“ type”:null}
答案 0 :(得分:0)
将查询发送到数据库时,不需要将变量连接到查询中。只需使用定义的变量即可:
错误:
$data = $conn->query("SELECT * FROM `goods` where color = '.$val.' LiMIT 4");
正确:
$data = $conn->query("SELECT * FROM `goods` where color = '$val' LiMIT 4");
此后,您需要从查询结果中生成数据。请检查this Q/A了解更多详情。
答案 1 :(得分:0)
@Blessed Media,您只是错过了获取mysql结果的机会,只是返回了查询而不是结果。
将查询更改为
$ data = $ conn-> query(“ SELECT * FROM goods
,其中color ='”。$ val。“'LiMIT 4”);
添加
$ result = $ data-> fetch_array(MYSQLI_ASSOC);
之后
$ data = $ conn-> query(“ SELECT * FROM goods
,其中color ='。$ val。'LiMIT 4”);
然后
echo json_encode($ result);