尽管在服务器端成功执行,但Jquery AJAX返回错误500

Mar*_*eah 5 jquery codeigniter

我遇到了codeigniter和JQuery Ajax Post的问题.

我的javscript

        $('.remove').click(function(){
        var category=event.target.id;
        var id=$('input[name=article_id]').val();
        var p={};
        p['id']=id;

        $.ajax({
            type: "POST",
            url: "/backend.php/blog/removeCategories",
            async:true,
            cache:false,
            data: {id: id, category: category }
            }).done(function(msg){
                jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){});
            });
Run Code Online (Sandbox Code Playgroud)

我的codeigniter的控制器

 function removeCategories(){
        $id=$_POST['id'];
        $category_id=$_POST['category'];

        $this->article->removeCategory($category_id,$id);
    }
Run Code Online (Sandbox Code Playgroud)

我无法使用ajax函数,因为始终从服务器收到错误500.虽然,firebug返回加载资源时出错,但仍然执行函数removeCategories.

mar*_*ljn 6

通过对data选项进行以下更改,确保正确传递数据.

$.ajax({
            type: "POST",
            url: "/backend.php/blog/removeCategories",
            async:true,
            cache:false,
            data: {"id": id, "category": category }
            }).done(function(msg){
                jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){});
            });
Run Code Online (Sandbox Code Playgroud)

您编码的方式,每个键值对的键被设置为变量的值.


gor*_*ive 3

您的错误可能出在模型中。使用chrome dev toolkit查看返回的页面内容是什么。HTTP CODE 500表示服务器错误,通常是由于 PHP 中某处的语法问题造成的。

另外,在 ajax 调用中,您应该使用success:error:。如果代码抛出错误,这将允许您停止执行。

你为什么打电话backend.php/你不使用index.php吗?

另一种方法是,.load()您可以简单地从控制器传回 html,然后将success: function(data){}其附加到容器,而不是使用。这将允许您监视 ajax 调用是否是error()orsuccess()并采取相应的行动。