无法在Code ignitor1.7.3中处理Ajax请求

时间:2010-12-16 08:44:00

标签: php jquery codeigniter

我的代码在代码点火器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)) ; 
    }

4 个答案:

答案 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://)。