CodeIgniter AJAX 错误返回同一页面

Posted

技术标签:

【中文标题】CodeIgniter AJAX 错误返回同一页面【英文标题】:CodeIgniter AJAX bug returning same page 【发布时间】: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),你是怎么解决的? 【参考方案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/")

【讨论】:

以上是关于CodeIgniter AJAX 错误返回同一页面的主要内容,如果未能解决你的问题,请参考以下文章

我一直在codeigniter的ajax网址中找不到404错误

调用 CodeIgniter 控制器方法返回 404

Codeigniter AJAX 示例

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?

重定向后如何记住CodeIgniter(CI)中的输入表单数据而不是再次进入同一页面

CodeIgniter 中的 Ajax 上传返回“您没有选择要上传的文件”