【问题标题】:Javascript - Json getting the value from the table using codeigniterJavascript - Json 使用 codeigniter 从表中获取值
【发布时间】:2016-08-31 10:37:47
【问题描述】:

我是 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 !');
                }
    })
});

控制器

    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 Uncaught SyntaxError: Unexpected token

提前致谢。

【问题讨论】:

    标签: javascript php jquery json codeigniter


    【解决方案1】:

    我认为有很多东西可以简化你的控制器和 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 - 为了验证这一点,您可以尝试直接调用您的函数并查看您的浏览器得到了什么作为输出。

    【讨论】:

    • 感谢它也有帮助。但我问 header('Content-Type: application/json'); 的用途是什么
    • Content-Type: application/json 内容标题只是关于返回数据类型的信息——我不确定,但我认为 jQuery 不在乎你是否使用它——但你可以试试。如果您仍然遇到意外令牌的问题 - 直接调用 url 并向我们展示您的输出
    • 我尝试了您的代码,但它仍然具有与其他 cmets 代码相同的输出。这是正确的,但它仍然在这里显示出意外的标记。 prntscr.com/cch3wi
    • 我已经发现了错误。我忘记了我也尝试将我的 ajax 代码放到我的 custom.js 中,那里的代码仍然有错误。顺便说一句,感谢您回答我的问题并使代码更简单
    【解决方案2】:

    在 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);
    

    【讨论】:

    • 它在控制台中显示 Uncaught TypeError: json.split is not a function
    • 对不起。它已经工作了。谢谢,但是当控制台部分中已经有输出时,它会继续显示这种错误 Uncaught SyntaxError: Unexpected token
    • 改变这一行 var json = JSON.parse(data);到 var json = JSON.parse(JSON.stringify(data));
    • 我按照你说的方式更改了它,但它没有在字段中显示输出并且错误仍然存​​在
    • 除了 array 之外,你还打印过什么吗?或者什么 console.log(data);显示?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2013-08-20
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多