我正在使用CodeIgniter 3,我会对存储脚本的位置提出一些建议。我想用jQuery调用一个php脚本,它将JSON数据发送到我的Javascript函数。
如何使用CodeIgniter数据库配置文件在此脚本中与我的数据库建立连接?
这是我的jQuery回调结构:
<?php
session_start();
header('Content-Type: text/json');
error_reporting(E_ALL);
ini_set("display_errors", 1);
$callback = array();
echo json_encode($callback);
我已将此脚本存储在我所创建的app/callback
文件夹中,但我不知道是否应将其存储在app文件夹之外...您如何构建CodeIgniter的项目?
感谢您的建议:)
答案 0 :(得分:1)
如果你想从jQuery调用后端函数,你必须使用AJAX。检查文档here。请参阅下面的一个简单示例。
$.ajax({
method: "POST",
url: "PATH_TO_YOUR_CONTROLLER_FUNCTION",
data: { field_name1: "Field value 1", field_name2: "Field value 2" }
}).done(function( msg ) {
console.log(msg);
});
如果你的视图中有这个脚本(这是一个php文件),你将能够使用php函数来设置路径。例如:
url: "<?php echo base_url('your_controller/your_function')?>"
数据库连接和所有逻辑都保留在控制器中,并照常实现。
答案 1 :(得分:1)
<强>设置; 强>
在application/config/database.php
配置数据库连接中
在application/config/autoload.php
中确保已启用数据库库
here了解有关数据库设置的更多信息
<强>模型; 强>
在application / models /中创建用于访问数据库的thing_model.php
函数。对于此示例public function get_data()
,此函数将在调用时生成数据库JSON数据输出
here了解更多信息以查询您的数据库
<强>控制器; 强>
在您的application/controllers/thing.php
中创建一个ajax函数;
public function ajax()
{
if ($this->session->loggedin && $this->input->is_ajax_request()){
$action = $this->uri->segment(3);
if ($action === "pull"){
$forms = $this->thing_model->get_data();
//actions here
}
if ($action === "test"){
//actions here
echo "hello world!";
}
} else {
redirect('/homepage');
}
}
发生什么事;
if ($this->session->loggedin && $this->input->is_ajax_request()){
在这里,您正在检查安全性,并且请求本质上是ajax
$action = $this->uri->segment(3);
正在从URI中抓取一个段来进行操作。例如。 http://example.org/controller/ajaxmethod/this_action
if ($action === "pull"){
,则 http://example.org/thing/ajax/pull
会返回数据
<强> AJAX; 强>
在.js文件中的jquery JSON ajax (在视图的页脚中加载.js文件)
$('#buttonAction').click(function() {
//Jquery Ajax code here
$.ajax({
method: "POST",
dataType: "json",
url: global_path + "thing/ajax/pull",
data: { user_id: "1", data: "ABC" }
})
.done(function( data ) {
//process your JSON data here
});
});
发生什么事;
jquery ajax数据类型see here
url: global_path + "thing/ajax/pull",
使用pull操作调用控制器ajax()方法。
备注强>
在控制器的__construct中,我建议在这里进行一些测试,以确保只为您的函数提供ajax请求,而不是其他用于严格操作和不需要的未知数的请求。
如果适合您的应用程序,您可以将ajax放到另一个控制器上。但这可能会造成安全问题,并带有重复检查等。