Javascript - Json使用codeigniter从表中获取值

时间:2016-08-31 10:37:48

标签: javascript php jquery json codeigniter

我是ajax和json的新手。在我的选择选项中,我有产品清单。如果我按任何产品,它将显示其价格和供应商。但是我的代码发生了什么,它既显示产品又显示供应商,但不显示特定字段。这是Example
550.00是价格和asdadsadsadsadsadsad有供应商的名称。所以输出必须在他们的特定字段中。

JAVASCRIPT

    $("#prod-names").change(function(){
    var prodid = $("#prod-names option:selected").attr("value");
    $.ajax({
        url: "http://localhost:800/client_ayos/administrator/createpromoajax/"+prodid,
        type: "POST",


        success: function(data){
            console.log(data);
            var json = JSON.parse(data);

            $("#orig-price").val(json); //val =  value of #orig-price
            $("#supplier").val(json); //val =  value of #orig-price

        },
        error: function (jqXHR, textStatus, errorThrown){
                    alert('Error !');
                }
    })
});

CONTROLLER

    public function createpromoajax($id){
    //echo json_encode($this->uri->segment(3));
    $data['productid'] = $this->AdminModel->get_prodid($id);

    $price = $data['productid']->price;
    $supplier = $data['productid']->supplier;

    $ajaxproduct = array(
        $data['productid']->price,
        $data['productid']->supplier,
        );


    echo json_encode($ajaxproduct);

}

PS:我也遇到过这种错误,但仍显示正确的输出,但不是在特定的字段中

VM13100:1未捕获的SyntaxError:意外的令牌<在位置0的JSON中

提前致谢。

2 个答案:

答案 0 :(得分:0)

在php

中更改此内容
    $ajaxproduct = array(
        "price"=>$data['productid']->price,
        "supplier"=>$data['productid']->supplier,
    );

然后你可以写

    $("#orig-price").val(json.price); //val =  value of #orig-price
    $("#supplier").val(json.supplier);

答案 1 :(得分:0)

我认为有很多简化你的控制器和js结构 尝试类似的东西

这是php部分

public function createpromoajax($id)
{
    $objProduct = $this->AdminModel->get_prodid($id);
    header('Content-Type: application/json');
    echo json_encode($objProduct);
}

和你的javascript部分

$("#prod-names").change(function(){

    var prodid = $("#prod-names option:selected").attr("value");
    var url = "http://localhost:800/client_ayos/administrator/createpromoajax/"+prodid;

    $.getJSON( url, function(data) {
        $("#orig-price").val(data.price);
        $("#supplier").val(data.supplier); //val =  value of #orig-price
    });
});

我不确定这意味着什么"未检测到的令牌......"但我认为你已经在createpromoajax函数之前输出了一些html - 为了验证这一点,你可以尝试直接调用你的函数,看看你的浏览器输出的是什么。