Javascript Ajax:未调用路由中指定的函数
我有一个按钮,当你点击它时,它会显示一个确认框。如果用户单击“确定”,则“到达”一词将显示在名为“EventData”的div内 到目前为止,当我单击按钮时,确认框会显示,但当我确认时,“EventData”不会显示“Reach”一词 *“event_id”有一个值 我认为问题在于url部分在函数中不会出现 路线:Javascript Ajax:未调用路由中指定的函数,javascript,php,ajax,laravel,Javascript,Php,Ajax,Laravel,我有一个按钮,当你点击它时,它会显示一个确认框。如果用户单击“确定”,则“到达”一词将显示在名为“EventData”的div内 到目前为止,当我单击按钮时,确认框会显示,但当我确认时,“EventData”不会显示“Reach”一词 *“event_id”有一个值 我认为问题在于url部分在函数中不会出现 路线: Route::post('/ArchiveEventPosts','AdminController@ArchiveEventposts')->name('ArchiveEven
Route::post('/ArchiveEventPosts','AdminController@ArchiveEventposts')->name('ArchiveEventposts');
脚本:
$(document).on('click', '.archive', function() {
var event_id = $(this).attr('event_id');
var x = confirm("Are you sure you want to archive this record?");
if (x) {
$.ajax({
method: "POST",
url: '{{ route("ArchiveEventposts") }}',
data: {
event_id: event_id
},
success: function(data) {
$('#EventData').html(data);
alert('Record Archived');
}
});
}
});
控制器中的功能:
public function ArchiveEventposts(Request $request)
{
echo 'Reached';
}
控制器方法未返回任何数据;它只是简单地打印“到达”一词 您需要将函数更改为以下内容:
public function ArchiveEventposts(Request $request)
{
return response()->json(["message" => "Reached"]);
}
var archiveEventpostsRoute = "{{ route('ArchiveEventposts') }}";
您可能需要更改分配路线的方式。您所做的是用一个引号为URL分配一个普通字符串。试着这样做:
public function ArchiveEventposts(Request $request)
{
return response()->json(["message" => "Reached"]);
}
var archiveEventpostsRoute = "{{ route('ArchiveEventposts') }}";
及以下
url: archiveEventpostsRoute,
此外,确保控制器返回正确的数据,如另一个答案中所述:
public function ArchiveEventposts(Request $request)
{
return response()->json(["message" => "Reached"]);
}
解决方案可能是您和我的答案的组合。@JohnClyde您能否在创建后立即添加
警报(archiveEventpostsRoute)
,以确认是否分配了正确的routeyep它显示路径:@JohnClyde如果您手动转到刚才发布的链接(在浏览器中打开),它是否以JSON的形式显示类似于message=>reacted
的内容?我转到链接,它显示:此路由不支持GET方法。支持方式:POST。啊,对不起,我的不好,它需要POST,正确。我想试着改变路线以接受GET而不是临时发布,看看问题出在哪里。它真的应该按原样工作。状态码是什么?我发现您没有在web路由上为POST
请求传递CSRF令牌。你能为请求粘贴控制台输出吗?@Rehmat抱歉,我真的不知道你在说什么。