我正在使用这样的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>) }}" ;
答案 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
并确保您拥有GET
和DELETE
的路由。