Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax:未调用路由中指定的函数_Javascript_Php_Ajax_Laravel - Fatal编程技术网

Javascript Ajax:未调用路由中指定的函数

Javascript Ajax:未调用路由中指定的函数,javascript,php,ajax,laravel,Javascript,Php,Ajax,Laravel,我有一个按钮,当你点击它时,它会显示一个确认框。如果用户单击“确定”,则“到达”一词将显示在名为“EventData”的div内 到目前为止,当我单击按钮时,确认框会显示,但当我确认时,“EventData”不会显示“Reach”一词 *“event_id”有一个值 我认为问题在于url部分在函数中不会出现 路线: Route::post('/ArchiveEventPosts','AdminController@ArchiveEventposts')->name('ArchiveEven

我有一个按钮,当你点击它时,它会显示一个确认框。如果用户单击“确定”,则“到达”一词将显示在名为“EventData”的div内

到目前为止,当我单击按钮时,确认框会显示,但当我确认时,“EventData”不会显示“Reach”一词

*“event_id”有一个值

我认为问题在于url部分在函数中不会出现

路线:

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抱歉,我真的不知道你在说什么。