gpt4 book ai didi

javascript - Codeigniter ajax调用错误

转载 作者:行者123 更新时间:2023-12-03 12:28:37 26 4
gpt4 key购买 nike

我正在尝试进行 ajax 调用以从数据库获取结果,但遇到错误。

我的 JavaScript:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script language="Javascript">
setTimeout(makeAjaxCall, 1000);
function makeAjaxCall(){
$.ajax({
type: "post",
url: "call/update",
cache: false,
data: {action: 'getUpdate', term: '<?php echo $id;?>'},
success: function(json){
try{
var obj = jQuery.parseJSON(json);
alert( obj['STATUS'] + obj['results']);


}catch(e) {
alert('Exception while request..');
}
},
error: function(){
alert('Error while request..');
}
});
}
</script>

我的 Controller 的方法:

public function update()
{
if (isset($_POST['action'])){
if ($_POST['action'] == 'getUpdate'){
pollNewData();
}
}

function pollNewData(){
$term = $_POST['term'];
$query = $this->db->query("SELECT * FROM users where guid <> '' and user_id = '$term'");
$res = $query->result();
echo json_encode(array('STATUS'=>200, 'results'=>$res));
}

}

我在 Chrome 调试工具上遇到此错误:

500(内部服务器错误)

最佳答案

您有几个问题。下面是工作代码:

public function update()
{

if(!function_exists('pollNewData')){ // don't redeclare if already exists
function pollNewData($db){ // pass $db
$term = $_POST['term'];
$query = $db->query("SELECT * FROM users where guid <> '' and user_id = '$term'");
$res = $query->result();
echo json_encode(array('STATUS'=>200, 'results'=>$res));
}
}

if (isset($_POST['action'])){
if ($_POST['action'] == 'getUpdate'){
pollNewData($this->db); // pass $this->db
}
}

}

变化:

  • 将函数定义移至调用之前 - 它在调用之前必须存在。
  • 函数中未设置 $this 上下文,因此将 $db 对象作为参数传递。
  • 在类方法内定义函数时,必须进行 function_exists() 检查,因为在第二次调用时,它将尝试重新声明该函数并产生 fatal error 。

为了将来的调试,您应该打开错误:

error_reporting(E_ALL);
ini_set('display_errors', '1');

关于javascript - Codeigniter ajax调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com