使用get/put/delete方法从ajax请求调用laravel-controler


Call laravel controler from an ajax request with get / put / delete method

我有一个这样的javascript,它将在两种不同的情况下调用两个不同的控制器。。。。现在的问题是,它是一个获取方法和一个销毁方法。。。当调用生成时,控制器功能从未被触发。不知道url方法是否正确。它给出了500的错误。

我也不确定来自控制器的响应。但在此之前,我需要在控制器中执行数据库操作。。。它不会执行。提前感谢您的帮助:)

JS代码如下:-->

function follow_or_unfollow(id,action)
{
    //var dataString = "id=" + id;
    if( action == "follow" ) {
        myUrl = "{{ action('FollowsController@show', 'id') }}" ;
        myMethod = "GET";
    }
    else
    { 
        myUrl = "{{ action('FollowsController@destroy', 'id') }}" ;
        myMethod = "DELETE";
    } 
    var dataString = "id=" + id;
    $.ajax({  
        type: myMethod ,  
        url: myUrl,  
        //data: dataString,
        beforeSend: function() 
        {
            if ( action == "following" )
            {
                $("#following"+id).hide();
                $("#loading"+id).html('<img src="loading.gif" align="absmiddle" alt="Loading...">');
            }
            else if ( action == "follow" )
            {
                $("#follow"+id).hide();
                $("#loading"+id).html('<img src="loading.gif" align="absmiddle" alt="Loading...">');
            }
            else { }
        },  
        success: function(response)
        {
            if ( action == "following" ){
                $("#loading"+id).html('');
                $("#follow"+id).show();
            }
            else if ( action == "follow" ){
                $("#loading"+id).html('');
                $("#following"+id).show();
            }
            else { }
        },
        error : function(xhr, textStatus, errorThrown ) {
                    if (xhr.status == 500) {
                        alert("Error 500: "+xhr.status+": "+xhr.statusText);
                    } else {
                        alert("Error: "+xhr.status+": "+xhr.statusText);
                    }
                },
                complete : function(xhr, textStatus) {
                      allert('ok');
                }
    }); 
}
</script>

第一次编辑

在firefox工具检查后获得一分(如Chinnu所建议)

显示

`[18:38:47.658] GET http://localhost/ffdd/public/follows/id [HTTP/1.1 500 Internal Server Error 230ms]`

这意味着!id不是作为数字或id变量生成的,它只是作为"id"字符串生成的。现在需要一个具体的解决方案,如何将id的值发送到那里。。。。在控制器上通过JS。

第二次编辑

如果我把id的数字或值放在那里,而不是用"id"来表示,这意味着如果可以直接打印id的值,它就会起作用。什么方法更容易做到这一点?

myUrl = "{{ action('FollowsController@destroy', <the value of id>) }}" ;

请求的type("POST"或"GET"),默认为"GET"。注意:这里也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们。

参考编号:http://api.jquery.com/jQuery.ajax/

注意:您可以在Firefox Tools->Web Developer->Error Console或CTRL+SHIFT+J 中找到此错误

您正试图访问php助手函数中的javascript变量,但该函数不起作用。我不确定是什么将id传递到该函数中,但如果它是通过PHP传递到视图中的,那么您应该使用{{ action('FollowsController@show', array($id)) }}

如果它没有被传递到视图中,那么您必须使用myUrl = '/follow/'+id,并确保您有GETDELETE的路由。