【问题标题】:CodeIgniter AJAX bug returning same pageCodeIgniter AJAX 错误返回同一页面
【发布时间】:2011-01-11 11:42:47
【问题描述】:

当我尝试使用 jQuery 发出 AJAX 请求作为响应时,我得到了同一页面的 html! 这是一个实时预览(由于我正在修复它,编辑不可用)

这是我的文件 编辑:我对一些文件进行了更改

主控制器:

Class Main extends Controller {

function Main() 
{
      parent::Controller();   
}

function index(){

    $this->load->view('oxila_index');
}}

Oxila_index 视图(仅 JS 其余的 html 在上面的链接中)

 <script type="text/javascript">
        $(document).ready(function(){
            $("#inv").hide();
        });
        $(document).ready(function(){
            $("#submit").click(function(evt){

                $.post("/ajax/process", {
                    url: $("#url").val()
                }, function(response){
                        $("#output").html("");
                    $("#inv").show("slow"); 
                        $("#output").html(response);
                }, "text");
                evt.preventDefault();
            }); 
        });
    </script>

Ajax 控制器

Class Ajax extends Controller {

    function process(){

        $data['url'] = $this->input->post('url');
        $this->load->view('test',$data);
        echo "hello world";
    }
}

【问题讨论】:

  • 您能添加更多代码吗?输出没有意义。 echo $this->input->post('lurl');你有一个 $this->load->view() 某处......
  • 那么,视图 test.php 包含什么?
  • 哎呀,忘记了,但它包含简单的
  • 嘿伙计,我也遇到了同样的问题(但我没有使用 codeIgniter),你是怎么解决的?

标签: jquery ajax .htaccess codeigniter


【解决方案1】:

我刚刚尝试了您的页面,它运行良好。仅供参考,我在 Linux 中使用 google chrome。

不过,我有一些笔记。首先,将script 从&lt;head&gt; 移动到页面底部,在&lt;/body&gt; 上方。这是最佳实践,因为加载 js 代码会阻止同时加载其他页面元素、css 和图像。

其次,如果您不更改服务器端的任何内容,请使用GET 而不是POST。为了避免在 IE 中缓存,只需添加另一个具有随机值的参数即可。

第三,$("#output").html(""); 这行不是必须的。您可以放置​​$("#output").html(response);,因为.html() 将替换容器内的任何现有内容。无需清空。

【讨论】:

  • 是的,我昨晚修复了它,我稍微添加了解决方案,感谢您的提示:)
【解决方案2】:

这是论坛里的一个人告诉我的

你肯定有一些东西。我输入的每一条路径 在网址引导我到家之后 页面。

尝试将您的 URL 协议从 AUTO到别的东西。 (这可以是 在 config/config.php 文件中找到)

我将其更改为“REQUEST_URI”,它可以工作!

【讨论】:

    【解决方案3】:

    您没有您的测试功能和您的模型来处理发布请求的视图不存在

    【讨论】:

      【解决方案4】:

      确保您的配置将此设置设为 FALSE;

      $config['compress_output'] = FALSE;
      

      【讨论】:

        【解决方案5】:

        为什么要公开功能?

        public function test(){
        
            echo $this->input->post('lurl');
        
            }
        

        删除 public 并使其成为其他任何人的功能:http://codeigniter.com/user_guide/general/controllers.html

        还尝试在 javascript 中包含整个 URL 以尝试是否有效:

        $.post("http://yourwebsite/oxila/test/")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-15
          • 2017-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多