2016-08-31 2 views
0

Я новичок в ajax и json. и в моей опции выбора у меня есть список продуктов. и если я нажму на какой-либо продукт, он покажет цену и поставщика. но что случилось с моим кодом, это показывает как продукт, так и поставщик, но не в определенных областях. Вот Example
550.00 - это цена и asdadsadsadsadsadsad есть имя поставщика. поэтому выход должен быть в их конкретных областях.Javascript - Json получает значение из таблицы с помощью codeigniter

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 Uncaught SyntaxError: Неожиданный токен < в JSON в положении 0

Заранее спасибо.

ответ

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

я не уверен, что это значит «непредсказуемую фишку ...», но я думаю, что вы уже выход некоторых HTML перед функцией createpromoajax - для того, чтобы убедиться в этом, вы можете попробовать напрямую вызвать вашу функцию и посмотреть, что ваш браузер получает как выход.

+0

спасибо, что это тоже помогло.но я спрашиваю, что такое использование заголовка («Content-Type: application/json»); – erinr

+0

'Content-Type: application/json' заголовок содержимого - это просто информация о типе возвращаемых данных - я не уверен, но я думаю, что jQuery не заботится о том, используете вы это или нет, но вы можете попробовать. Если вы по-прежнему сталкиваетесь со своей проблемой с неожиданной маркерной вещью - вызовите url напрямую и покажите нам свой вывод – sintakonte

+0

Я пробовал ваш код, и все же он имеет тот же результат, что и другие коды комментариев. который является правильным, но он все еще показывает неожиданный токен здесь. http://prntscr.com/cch3wi – erinr

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); 
+0

это говорит в консоли Непринятый TypeError: json.split не является функцией – erinr

+0

Я только что отредактировал мой ответ, пожалуйста, проверьте его –

+0

Прошу прощения. он работает уже.thanks, но когда выход уже присутствует в консольной части, он продолжает показывать такую ​​ошибку. Uncaught SyntaxError: Неожиданный токен <в JSON в позиции 0. что это значит? – erinr

Смежные вопросы