使用get / put / delete方法从ajax请求调用laravel控制器

时间:2013-11-24 12:51:28

标签: javascript php ajax laravel laravel-4

我正在使用这样的javascript,它将在两种不同情况下调用两个不同的控制器.... 现在的问题是它是一个get方法,一个是destroy方法......当生成调用时,控制器函数永远不会被触发。不知道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”字符串。现在需要一个特定的解决方案,如何在控制器上通过JS发送id的值....

第二次修改

如果我输入id的数字或值而不是'id'来提及它意味着如果id的值可以直接打印那么它将起作用。什么是更容易的方法呢?

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

2 个答案:

答案 0 :(得分:0)

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

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

注意:您可以在Firefox工具中找到此错误 - > Web Developer - &gt;错误控制台或CTRL + SHIFT + J

答案 1 :(得分:0)

您正在尝试访问php帮助程序函数内的javascript变量将无法正常工作。我不确定是什么将id传递给该函数,但是如果它通过PHP传递到视图中,那么你应该使用{{ action('FollowsController@show', array($id)) }}

如果未将其传递到视图中,则必须使用myUrl = '/follow/'+id并确保您拥有GETDELETE的路由。