返回同一页面的CodeIgniter AJAX错误

时间:2010-01-31 19:02:11

标签: jquery ajax .htaccess codeigniter

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

这是我的档案 编辑:我已对某些文件进行了更改

主控制器:

Class Main extends Controller {

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

function index(){

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

Oxila_index视图(只是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";
    }
}

5 个答案:

答案 0 :(得分:1)

我刚试过你的页面,效果很好。仅供参考,我在Linux中使用谷歌浏览器。

我有一些笔记。首先,将script<head>移至页面底部</body>上方。这是最佳实践,因为加载js代码将阻止其他页面元素,CSS和图像的并发加载。

其次,如果您未在服务器端更改任何内容,请使用GET代替POST。要避免在IE中进行缓存,只需添加另一个具有随机值的参数。

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

答案 1 :(得分:1)

这是论坛上的一个人告诉我的事情

  你肯定有适当的东西。我键入的每一条路径   在网址引导我到家后   页。

     

尝试更改您的网址协议   AUTO到别的东西。 (这可以   在config / config.php文件中找到)

我将其更改为“REQUEST_URI”并且有效!

答案 2 :(得分:0)

您没有测试功能的视图,并且您的模型无法处理发布请求

答案 3 :(得分:0)

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

$config['compress_output'] = FALSE;

答案 4 :(得分:0)

为什么公共职能?

public function test(){

    echo $this->input->post('lurl');

    }

删除公开,只需将其作为其他任何人的功能:http://codeigniter.com/user_guide/general/controllers.html

还要尝试在javascript中包含整个网址以尝试它是否有效:

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