我正在使用AJAX并尝试返回我在modcomp.php文件中查询数据库后得到的变量,然后我尝试将这些值输入到我的主站点以放入输入框。以下是我尝试过的但是没有用。这是因为我在PHP中获取变量然后将它们重新用于JS / jQuery中吗?做一些搜索它看起来像JSON可能是答案,但看着JSON我还没有看到一个例子,我如何运行代码来查询数据库,然后将该信息以JSON格式拉回来?我的目标是最终撤回所有10个变量。
$.ajax({
method: "POST",
url: "modcomp.php",
data: {item: $(this).val()}
success: function(data) {
$('#itemnumber').val($itemnumber);
$('#cost').val($cost);
}
});
modcomp.php文件
<?php
if(array_key_exists("item", $_POST)) {
include("connection.php");
$query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1";
if ($result=mysqli_query($link,$query)) {
$row=mysqli_fetch_array($result);
$id=$row[0];
$itemnumber=$row[1];
$itemname=$row[2];
$cost=$row[3];
$company=$row[4];
$contact=$row[5];
$address1=$row[6];
$address2=$row[7];
$phone=$row[8];
$part=$row[9];
//print_r ($id." ".$itemnumber." ".$itemname." ".$cost." ".$company." ".$contact." ".$address1." ".$address2." ".$phone." ".$part);
} else {
print_r("Issue with query");
}
}
&GT;
答案 0 :(得分:2)
json_encode是答案
<?php
if(array_key_exists("item", $_POST)) {
include("connection.php");
$query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1";
if ($result=mysqli_query($link,$query)) {
$row=mysqli_fetch_array($result);
$array = ();
$array['id']=$row[0];
$array['itemnumber']=$row[1];
$array['itemname']=$row[2];
.
.
$array['part']=$row[9];
$array['status'] = true;
echo json_encode($array);
} else {
echo json_encode(array(status => false , msg => "Issue with query");
}
}
然后在你的js代码中使用json作为
$.ajax({
method: "POST",
url: "modcomp.php",
data: {item: $(this).val()}
success: function(data) {
data = JSON.parse(data); // to parse json string to object
if(data.status){
$('#itemnumber').val(data.itemnumber);
$('#cost').val(data.cost);
}
}
});
答案 1 :(得分:2)
最简单的方法是将jquery.ajax设置为期望json为return:
$.ajax({
method: "POST",
dataType: "JSON",
/** others attributes **/
之后,将你的返回转换为json并在php脚本中打印它(仅此而已):
//a better approach is return the column name (fetch_assoc)
echo json_encode($row);
现在,你的回报可以用作json:
success: function(data) {
data.column_name
}
答案 2 :(得分:1)
你应该从php文件中返回你的值
<?php
if(array_key_exists("item", $_POST)) {
include("connection.php");
$query="SELECT * FROM components WHERE itemname = '".mysqli_real_escape_string($link,$_POST['item'])."' LIMIT 1";
if ($result=mysqli_query($link,$query)) {
$row=mysqli_fetch_array($result);
return json_encode($row,true);
} else {
return json_encode("Some error occured");
}
}
不要使用print_r()函数从php文件中返回数据
并将ajax中的数据类型设置为JSON,以解析要返回的json数据
$.ajax({
method: "POST",
url: "modcomp.php",
datatype:'json',
data: {item: $(this).val()}
success: function(data) {
$('#itemnumber').val(data.itemnumber);
$('#cost').val(data.cost);
}
});
现在,您可以使用点(。)运算符(如
)来使用json数据$('#cost').val(data.cost);