我的代码在代码点火器1.7.1中正常工作现在无法调用控制器方法 user / checkAvailability?requestSource = USER_AVAILABILITY 它将错误阻止并打印警报作为警报('在旁边错误');
我发现Jquery Ajax请求都没有工作..
无法理解为什么它不会调用控制器方法,
请帮忙
function checkAvailability(){ $.blockUI({message: null});
var newMessage = 'E1';
$('#searchLoading').show(); alert('I am here'); $.ajax({
type: "post",
url: "user/checkAvailability?requestSource=USER_AVAILABILITY",
cache: false,
data: "userName=" + $("#userName").val(),
success: function(json){
alert("Printing Json");
try{
$.unblockUI();
var obj = JSON.parse(json);
if(obj[0].STATUS=='true'){
newMessage = "E15";
$('#checkUser').hide();
}else{
newMessage = "E16";
$("#checkUser").hide();
}
showMessage(newMessage);
$('#searchLoading').hide();
}catch(e) {
alert('In side Exception');
showMessage("E1");
$.unblockUI();
$('#searchLoading').hide();
}
},
error: function(){
alert('In side Error');
$('#searchLoading').hide();
$.unblockUI();
$("#checkUser").hide();
showMessage(newMessage);
$( "form" )[0].reset();
} });
}
控制器用户中的CI方法
/**
This method is used to check User Name availabiliy.
*/
public function checkAvailability(){
$userName = trim($this->input->post('userName'));
$query = $this->UserModel->getUser($userName);
$status =array("STATUS"=>"true");
if($query){
$status = array("STATUS"=>"false");
}
echo json_encode (array($status)) ;
}
答案 0 :(得分:1)
当AJAX请求未到达页面时,通常会出现错误。
将AJAX请求中的URL更改为绝对路径,即
url: "/user/checkAvailability?requestSource=USER_AVAILABILITY"
或
url: "http://site.com/user/checkAvailability?requestSource=USER_AVAILABILITY"
答案 1 :(得分:1)
升级到1.7.3的人遇到问题的最大原因是他们覆盖了他们的配置文件。确保所有配置文件都预先备份,或者之后恢复。
除了一行代码上的安全修补程序外,所有内容都在1.7.3中更改,这不会破坏AJAX。
答案 2 :(得分:0)
在JQuery中发出AJAX请求时,也许还尝试将dataType属性显式设置为json。可能是JQuery试图将JSON解析为其他东西。
dataType:'json'
此处有更多信息:http://api.jquery.com/jQuery.ajax/
我会回应Phil的建议,即使用Chrome中的Firebug或开发者控制台来了解您的AJAX请求是否发生了什么。
答案 3 :(得分:0)
确保在config.php中启用了查询字符串
应该在system / application / config / config.php
的第151行附近变化
$config['enable_query_strings'] = FALSE;
到
$config['enable_query_strings'] = TRUE;
我假设您有原因?在网址上标记了requestSource = USER_AVAILABILITY。
同样,请使用您的ajax网址中的完整网址(包括http://)。