ajax将结果设置为变量

时间:2016-07-06 00:17:37

标签: php jquery ajax

如何将Ajax调用的结果分配给变量?

我有一个下拉列表。当用户做出选择时。我希望ajax调用PHP页面从服务器中查找相关数据并自动将其填入输入字段。

见下面的代码

$(document).on('change','#dropdownchoiceid', function(){
        $id = 1; // passing in some variable for php to use
        $.ajax({

            url: "../folder/getdata.php",
            type: "POST",
            data: {
                'id' : $id
            },
            success:function(data){
                $result = data; 
                console.log($result);
                $('#inputid').val($result.column1);
                $('#inputid2').val($result.column2);
            }
        });

php正在运行。我在一个看起来像这个

的对象中得到了结果
array(1) {
  [0]=>
  object(stdClass)#5 (4) {
    ["id"]=>
    string(1) "2"
    ["column1"]=>
    string(7) "20.0000"
    ["column2"]=>
    string(14) "someinfo"
    ["column3"]=>
    string(1) "1"
  }

所以我试图用我从服务器获得的数据来改变输入字段值。但是我在console.log中得到了空白。我不太明白下面的代码。我尝试过,因为我在stackoverflow上看到了类似问题的答案

success:function(data){
                $result = data; 

            }

PHP

<?php

//Create class Object
$mProduct = new mProduct;

$id = $_POST['id'];

$result= $mProduct->getData($id);

模型PHP页面是

public function getData($id){
    $this->db->query("
    SELECT 
    *
    FROM rebate
    WHERE id= :id
    ");
    //bind
    $this->db->bind(':id', $id);
    //Assign Result Set
    $result = $this->db->resultset();
    return $result;
}

3 个答案:

答案 0 :(得分:1)

要在前端接收数据,PHP页面必须打印一些内容,最好是JSON格式。试试这个:

<?php

//Create class Object
$mProduct = new mProduct;

$id = $_POST['id'];

$result= $mProduct->getData($id);

print_r(json_encode($result));

答案 1 :(得分:1)

根据你的var_dump,我硬编码了一个数组,以匹配你的db方法返回的数据, 在您的PHP页面中:

$arr=(object) [  "id"=> "2", "column1"=>"20.0000", "column2"=>"someinfo", column3"=>"1" ];
$arr=array($arr);
//var_dump($arr);
echo json_encode($arr, JSON_FORCE_OBJECT);

另外,我建议使用echo而不是print_r,因为

  

print_r还将显示PHP 5对象的受保护和私有属性。   See PHP Manual print_r

初始化$ result变量,因为它是一个包含单个元素的数组 你必须这样引用它:

$.ajax({

        url: "getData.php",
        type: "POST",
        data: {
            'id' : $id
        },
        dataType: "json",
        success:function(data){
            var $result = data; // var initialize
            console.log($result);
           $('#inputid').val($result[0].column1); //$result is an array
           $('#inputid2').val($result[0].column2);

        },
        error:function(data){
           window.alert("Something went wrong"+data.error);
        }
    });

你问: (引用)...是应该与我的PHP页面的$ result相匹配的单词数据? ..data是客户端上的变量,服务器响应存储在

答案 2 :(得分:0)

我是OP回答我自己的问题。

Get data from php array - AJAX - jQuery

检查上面的帖子后。这是答案

所以最终的工作代码看起来像这样

 $(document).on('change','#dropdownchoiceid', function(){
    $id = 1; // passing in some variable for php to use
    $.ajax({

        url: "../folder/getdata.php",
        type: "POST",
        data: {
            'id' : $id
        },
        datatype: "json",
        success:function(data){
            $result = data; 
            console.log($result);
            $('#inputid').val($result.column1);
            $('#inputid2').val($result.column2);
        }
    });
PHP中的

再添加一行

echo json_encode($result);