从AJAX / php文件返回变量

时间:2016-11-01 17:29:29

标签: php jquery ajax

我正在使用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;

3 个答案:

答案 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);