【问题标题】:Not able to process Ajax Request in Code ignitor1.7.3无法在代码 ignitor1.7.3 中处理 Ajax 请求
【发布时间】:2010-12-16 08:44:00
【问题描述】:

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

【问题讨论】:

  • 听说过 FirePHP? firephp.org 它应该可以帮助您进行一些调试...尝试注释掉所有内容,然后调用 echo json_encode(array("STATUS"=>"true")); 您的代码看起来很简单,但可能会发生一些时髦的事情。
  • @Fred- 服务器部分和响应稍后出现我的问题我无法将 ajax 请求发布到控制器。看看我的 java 脚本函数
  • Frieds - 经过一些研发后发现问题,当我从 URL 中删除 ?requestSource=USER_AVAILABILITY 时,问题与 URL user/checkAvailability?requestSource=USER_AVAILABILITY 其作品有关,我认为这是因为 GET 类型的 URL ,因为我在ajax请求中提到方法类型为POST,如果您有任何其他意见,请提供评论谢谢Yashwant

标签: php jquery codeigniter


【解决方案1】:

该错误通常出现在 AJAX 请求未到达页面时。

将 AJAX 请求中的 URL 更改为绝对路径,即

url: "/user/checkAvailability?requestSource=USER_AVAILABILITY"

url: "http://site.com/user/checkAvailability?requestSource=USER_AVAILABILITY"

【讨论】:

【解决方案2】:

升级到 1.7.3 的人出现问题的最大原因是他们覆盖了他们的配置文件。确保所有配置文件事先备份,或恢复到之后。

Sod 在 1.7.3 中都发生了变化,除了一行代码上的安全修补程序,它不会破坏 AJAX。

【讨论】:

  • 另外,这是 AJAX,所以使用 Firebug 来调试它。如果您查看响应,您会立即发现错误。
  • Ajax 是否需要任何配置?我也试过用萤火虫没有发现任何错误。
  • 这个 AJAX 调用请求的响应是什么?您在查看控制台选项卡吗?你知道 AJAX 和 Firebug 是如何工作的吗? :)
  • @Phil 在我的 java 脚本函数 checkAvailability() 中。我无法在它中断并进入错误之前向控制器发送请求:function(){} 函数,所以如果不发送请求将如何我得到响应,我的问题是无法向控制器发送 ajax 请求...
  • 你的 JavaScript 有错误,调试它...我无法从这里判断,尤其是没有错误消息。
【解决方案3】:

在 JQuery 中发出 AJAX 请求时,也许还可以尝试将 dataType 属性显式设置为 json。可能是 JQuery 正在尝试将 JSON 解析为其他内容。

dataType:'json'

更多信息在这里:http://api.jquery.com/jQuery.ajax/

我也赞同 Phil 的建议,即使用 Firebug 或 Chrome 中的开发者控制台来了解您的 AJAX 请求发生了什么。

【讨论】:

  • JSON 在有响应时出现。但我的问题是我无法处理 Ajax 请求
  • 我明白了。我的错。您正在反序列化回调函数中的 JSON。我以为您使用的是 JQuery 自己的内置 JSON 反序列化。没关系。继续! :-)
【解决方案4】:

确保您在 config.php 中启用了查询字符串

应该在 system/application/config/config.php 的第 151 行左右

改变

$config['enable_query_strings'] = FALSE;

$config['enable_query_strings'] = TRUE;

我假设您在 url 上标记了 ?requestSource=USER_AVAILABILITY 是有原因的。

也可以,在您的 ajax 网址中使用完整的网址(包括 http://)。

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 2016-12-23
    • 2013-11-03
    • 2012-08-31
    • 2015-06-22
    • 2015-10-13
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多