Php Codeigniter加载ajax请求
试图在投票系统中添加一些ajax功能,但它不起作用。我想向数据库发送一个post请求并更新计数值。我遇到的问题是,我似乎无法在MVC中实现ajax请求 我确实希望保留MVC结构 jquery代码是:Php Codeigniter加载ajax请求,php,jquery,codeigniter,Php,Jquery,Codeigniter,试图在投票系统中添加一些ajax功能,但它不起作用。我想向数据库发送一个post请求并更新计数值。我遇到的问题是,我似乎无法在MVC中实现ajax请求 我确实希望保留MVC结构 jquery代码是: <script> $( document ).ready(function() { $( "#vote li a" ).each(function( index ) { $(this).click(function(){ $.ajax =
<script>
$( document ).ready(function() {
$( "#vote li a" ).each(function( index ) {
$(this).click(function(){
$.ajax = ajax();
var id = $(this).attr('data-scenario-id');
var value = $(this).attr('data-value');
$.ajax({
url: "ajax-vote.php",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});
return false;
});
});
});
当前驻留在ajax-vote.php中的php代码是:
$id = isset($_GET['id']) ? $_GET['id'] : null;
$value = isset($_GET['value']) ? $_GET['value'] : null;
$query = $this->db->query('SELECT count FROM total_counts WHERE scenario_id = ' . $id . ' AND interaction_id = ' . $value);
$row = $query->row();
$count = $row->name;
$count++;
$query = $this->db->query('UPDATE total_counts SET count = ' . $count);
$query = $this->db->query('SELECT count FROM total_counts WHERE scenario_id = ' . $id . ' AND interaction_id = ' . $value);
$row = $query->row();
$count = $row->name;
switch ($value) {
case 1:
$text = 'OK '. $count;
break;
case 2:
$text = 'NOT OK'. $count;
break;
case 3:
$text = 'ABUSE'. $count;
break;
}
echo '<a href="#" data-scenario-id="'.$id.'" data-value="'.$value.'">'. $text .'</a>';
提前感谢。如果您正在使用codeigniter,则必须在url中提供控制器路径。我假设您的控制器名为ajax-vote.php,而不是您的ajax代码
$( document ).ready(function() {
$( "#vote li a" ).each(function( index ) {
$(this).click(function(){
$.ajax = ajax();
var id = $(this).attr('data-scenario-id');
var value = $(this).attr('data-value');
$.ajax({
url: "<?php echo base_url(); ?>ajax-vote",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});
return false;
});
});
});
您必须将代码放入控制器,而不是简单的php文件中!然后您可以向javascript传递codeigniters站点的url路径,如下所示:
<script> var site_url = '<?php echo site_url()?>';</script>
现在php和javascript已经分开了
当然,您必须做一个AjaxController扩展CI_控制器,并将代码放入一个名为ajax的函数或任何您想要的函数中,只需确保使用与js调用中使用的名称相同的名称我不能在应用程序框架外引用ajax-vote.php,它会破坏url结构。当我更改url以包含我的主控制器ie base_urlhome/vote时,我得到:Uncaught TypeError:无法读取未定义的属性“createDocumentFragment”-这是否意味着找到了该功能?ajax vote是CI设置之外的控制器还是普通文件?ajax vote是应用程序根目录中的普通文件-我想包括它作为应用程序,否则我将不得不硬编码的功能,并添加额外的膨胀到应用程序。
$.ajax({
url: site_url + "ajaxcontroller/vote",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});