我是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中
提前致谢。
答案 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 - 为了验证这一点,你可以尝试直接调用你的函数,看看你的浏览器输出的是什么。