我有一个这样的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
,并确保您有GET
和DELETE
的路由。