我想从ajax向基本控制器传递数据,但它无法正常工作。 我怎么能这样做?
我的核心/ MY_Controller中的BaseController
我的基本控制器:
<?php
class MY_Controller extends CI_Controller {
public $site_data;
function __construct() {
parent::__construct();
}
public function user_data_submit() {
$abc=$this->input->post('name');
$data = array(
'no' => $this->input->post('name')
);
//$data2["a"]=$abc;
/*$return["json"] = json_encode($return);
echo json_encode($return);*/
echo json_encode($abc);
}}
我的Ajax:
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "MY_Controller/user_data_submit",
dataType: 'json',
data: { name: ogrno },
success: function(data) {
if (data) {
// Show Entered Value
alert(data);
$("#notifications #bsayisi").text('');
}
}
});
});
});
答案 0 :(得分:1)
你非常接近。主要问题是尝试直接使用MY_Controller
。我会解释你需要做什么,但首先你需要纠正MY_Controller
中的一些问题。
您传递给json_encode()
的内容存在问题。你的ajax调用需要一些修复 - 如图所示});
行太多了。 (也许这是因为您没有显示的代码。如果是,那么请忽略我。)
假设ogrno
是先前定义的var。如果没有,也要修复它。
试试这个javascript
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "MY_Controller/user_data_submit",
dataType: 'json',
data: {name: ogrno},
success: function (data) {
if (data)
{
// Show Entered Value
alert(data);
//next line commented out because your intent is unclear
//$("#notifications #bsayisi").text('');
}
}
});
这应该可以修复控制器。
public function user_data_submit()
{
$data = array('no' => $this->input->post('name'));
echo json_encode($data);
}
您无法直接使用MY_Controller
,就像您无法直接使用CI_Controller
一样。要使用MY_Controller
,您必须使用MY_Controller
“扩展”新控制器。例如......
class Welcome extends MY_Controller { ...
Welcome
控制器现在可以使用方法user_data_submit()
但是,ajax调用中的url
选项现在将失败,因为“MY_Controller”不是调用所需的位置。它需要转到welcome
。该值必须是扩展MY_Controller
的控制器。 PHP Magic Constant __CLASS__
提供了获取扩展类名称的解决方案。
url: "<?php echo base_url(__CLASS__); ?>" + "/user_data_submit",
__CLASS__
将始终是扩展MY_Contoller
的类的名称。