开发者

CodeIgniter AJAX bug returning same page

开发者 https://www.devze.com 2022-12-18 21:15 出处:网络
when i try to make AJAX request with jQuery as a response i get the html of the same page ! here is a live preview(edit not available due to m开发者_如何学JAVAe fixing it )

when i try to make AJAX request with jQuery as a response i get the html of the same page ! here is a live preview (edit not available due to m开发者_如何学JAVAe fixing it )

here are my files Edit : I have made changes to some of the files

main controller :

Class Main extends Controller {

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

function index(){

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

Oxila_index view ( just the JS rest of the html is in the link above )

 <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 Controller

Class Ajax extends Controller {

    function process(){

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


I just tried your page, and it work well. FYI, I use google chrome in Linux.

I have a few notes though. First, move the script from <head> to the bottom of the page, above </body>. This is best practice, since loading js code will block concurrent loading of other page element, css and images.

Second, if you not change anything in the server side, use GET instead of POST. To avoid caching in IE, just add another parameter that have random value.

Third, the line $("#output").html(""); is not necessary. You can put the $("#output").html(response); because .html() will replace any existing content inside the container. No need to emptied it.


This is what a person in the forums told me

you definitely have something in place. Every single path I type in after the url leads me to the home page.

Try changing your URL Protocol from AUTO to something else. (this can be found in the config/config.php file)

i changed it to “REQUEST_URI” and it works !


You dont have a view for Your Test Function and Your Model to handle the Post Request isnt present


make sure your config has this setting to FALSE;

$config['compress_output'] = FALSE;


Why public function?

public function test(){

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

    }

Remove public and just make it a function as anyone else: http://codeigniter.com/user_guide/general/controllers.html

Try also to include the whole URL in the javascript to try if it work:

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

精彩评论

暂无评论...
验证码 换一张
取 消