代码之家  ›  专栏  ›  技术社区  ›  Nikola Sivkov

代码点火器Ajax错误返回同一页

  •  5
  • Nikola Sivkov  · 技术社区  · 16 年前

    当我试图以jquery作为响应发出Ajax请求时,我得到了相同页面的HTML! 这是一个实时预览(由于我修复了该预览,因此无法进行编辑)

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

    主控制器:

    Class Main extends Controller {
    
    function Main() 
    {
          parent::Controller();   
    }
    
    function index(){
    
        $this->load->view('oxila_index');
    }}
    

    Oxia_索引视图(仅HTML的JS其余部分在上面的链接中)

     <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 回复  |  直到 15 年前
        1
  •  1
  •   Donny Kurnia    16 年前

    我刚试过你的页面,效果很好。仅供参考,我在Linux中使用Google Chrome。

    不过,我有一些笔记。首先,移动 script <head> 到页面底部,在上面 </body> . 这是最佳实践,因为加载JS代码将阻止并发加载其他页面元素、CSS和图像。

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

    第三,线路 $("#output").html(""); 不需要。你可以把 $("#output").html(response); 因为 .html() 将替换容器中的任何现有内容。不用倒空。

        2
  •  1
  •   Nikola Sivkov    16 年前

    论坛里的人就是这么告诉我的

    你肯定有东西在那里。我输入的每一条路径 在URL引导我到家之后 页。

    尝试更改URL协议 自动转到其他东西。(这可以是 在config/config.php文件中找到)

    我把它改为__request_uri_然后它就工作了!

        3
  •  0
  •   streetparade    16 年前

    您没有测试功能的视图,并且没有处理POST请求的模型

        4
  •  0
  •   Teej    16 年前

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

    $config['compress_output'] = FALSE;
    
        5
  •  0
  •   Industrial    16 年前

    为什么是公共职能部门?

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

    删除public并将其作为其他任何函数: http://codeigniter.com/user_guide/general/controllers.html

    还可以尝试在javascript中包含整个URL,以尝试它是否工作:

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