[英]$Ajax request in codeigniter also check if request is correct
我已經嘗試了很多,搜索了很多,我所做的與我看到的相同,但是我不知道我要去哪里錯了,我對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;
}
請告訴我我的代碼在哪里出錯了?
試試這個代碼對我有用。 希望這會幫助你。
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;
}
問候!
您在使用dataType: 'json'
在本節中出錯,您的ajax應該返回一個json對象。
PHP Tag在js文件中不起作用,因此您應該將ajax請求放在頁面的頁腳中或對網址進行硬編碼。 例如: 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);
}
您可以像這樣更改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);
}
})
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.