我已经尝试了很多并且搜索了很多,我做了同样的事情,但我不知道我哪里出错我是codeigniter的新手。你能告诉我代码在哪里出错吗?我想根据所选的条形码在输入字段中设置产品名称。我试图获取产品名称并尝试使用AJAX设置它但它无法正常工作。请告诉我代码中的错误在哪里?
这是我在Main.php中的控制器功能
public function get_product()
{
if (!$this->input->is_ajax_request()) {
exit('No direct script access allowed');
}
$barcode = $_POST['barcode'];
echo $barcode;
exit;
$data['result'] = $this->Item_model->get_product_using_barcode($barcode);
print_r($data);
exit;
}
我在js文件中的Ajax代码:
$("#brcode").each(function(){
$("#brcode").change(function(){
let value = $("#brcode").val();
$.ajax({
url: '<?php echo site_url("main/get_product"); ?>',
type: 'POST',
data: {'barcode': $('#brcode option:selected').val() },
dataType: 'json',
success: function(data) {
//console.log(data);
alert(data);
}
})
});
});
模型功能: -
public function get_product_using_barcode($barcode){
$query = $this->db->get_where('items',array('barcode' => $barcode));
$result = $query->row();
return $result;
}
请告诉我我的代码在哪里出错?
答案 0 :(得分:2)
试试这段代码它对我有用。希望这会对你有所帮助。
<强> JQuery的:强>
$(document).ready(function() {
$("#brcode").change(function(){
let value = $("#brcode").val();
$.ajax({
// URL should be include index.php
url: '<?php echo site_url("index.php/main/get_product"); ?>',
type: 'POST',
data: {'barcode': $('#brcode option:selected').val() },
dataType: 'json',
success: function(data) {
//console.log(data);
alert(data);
}
})
});
});
<强>控制器:强>
public function get_product()
{
if (!$this->input->is_ajax_request()) {
exit('No direct script access allowed');
}
$barcode = $_POST['barcode'];
$data['result'] = $this->Item_model->get_product_using_barcode($barcode);
return json_encode $data;
}
<强>型号:强>
public function get_product_using_barcode($barcode){
$query = $this->db->get_where('items',array('barcode' => $barcode));
$result = $query->row();
return $result;
}
问候!
答案 1 :(得分:1)
当您使用dataType: 'json'
时,您在本节中出错了,您的ajax应该返回一个json对象。
PHP标签在js文件中不起作用,因此您应该将ajax请求放在页面的页脚中或硬编码您的URL。例如:url:"http://localhost/retail/main/get_product"
我认为let value = $("#brcode").val();
应为var value = $("#brcode").val();
所以你的控制器代码应该是
public function get_product()
{
$data = array();
if (!$this->input->is_ajax_request()) {
exit('No direct script access allowed');
}
$barcode = $_POST['barcode'];
$data['result'] = $this->Item_model->get_product_using_barcode($barcode);
echo json_encode(array("posted_data"=>$_POST,"database_data"=>$data['result']));
exit;
}
ajax成功使用此
success: function(data) {
console.log("Posted data");
console.log(data.posted_data);
console.log("Database data");
console.log(data.database_data);
}
答案 2 :(得分:1)
你可以像这样更改js代码吗?并尝试在控制台上看到。
$(document).ready(function() {
$("#brcode").change(function(){
var value = $("#brcode").val();
$.ajax({
url: '<?php echo site_url("main/get_product"); ?>',
type: 'POST',
data: {'barcode': $('#brcode option:selected').val() },
success: function(data) {
//console.log(data);
alert(data);
}
})
});
});