Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Php Laravel资源控制器ajax调用_Php_Ajax_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel资源控制器ajax调用

Php Laravel资源控制器ajax调用,php,ajax,laravel,laravel-4,Php,Ajax,Laravel,Laravel 4,使用Laravel 4.2,我的资源控制器设置如下: Route::resource('faq', 'ProductFaqController'); $.ajax({ url:'store', dataType:'json', success:function(data){ console.log(data); } }); <button class="test" data-resource="faq">Click me!<

使用Laravel 4.2,我的资源控制器设置如下:

Route::resource('faq', 'ProductFaqController');
 $.ajax({
    url:'store',
    dataType:'json',
    success:function(data){
        console.log(data);
    }
});
 <button class="test" data-resource="faq">Click me!</button>

 $('.test').on('click', function(e) {
    var resource = $(this).data("resource");

     $.ajax({
        url: '/' + resource,
        dataType:'json',
        type: 'post',
        success:function(data){
            console.log(data);
        }
    });
});
当我点击服务器上的/faq URL时,控制器的索引方法将正确加载

在js文件中,我想对这个资源控制器的其他动作之一进行ajax调用,例如store动作。因此,我会这样做:

Route::resource('faq', 'ProductFaqController');
 $.ajax({
    url:'store',
    dataType:'json',
    success:function(data){
        console.log(data);
    }
});
 <button class="test" data-resource="faq">Click me!</button>

 $('.test').on('click', function(e) {
    var resource = $(this).data("resource");

     $.ajax({
        url: '/' + resource,
        dataType:'json',
        type: 'post',
        success:function(data){
            console.log(data);
        }
    });
});
我遇到的问题是,由于URL是/faq,没有尾随斜杠,因此ajax调用会被调用到/store,而不是/faq/store

我是否在这里遗漏了什么,或者我是否需要在所有ajax调用的url前面加上路由前缀


如果我确实需要添加某种前缀,那么无论调用的是resource controller,我如何获得适当的前缀来使用?

从命令行运行此命令,它将列出所有URL路由以及它们所连接的控制器方法:

$ php artisan routes     # Laravel 4
$ php artisan route:list # Laravel 5
按原样制作资源控制器会创建7条不同的路由。这些路由都不包括URL中的任意存储位置。store方法存在于控制器上,但响应对示例中URL/faq的POST请求

这个问题的解决办法

将jQuery更改为POST而不是获取默认数据,并将AJAX url更改为“/faq”。然后,它应该在该点到达正确的路线

就能够在不知道实际路线的情况下点击资源控制器路线而言,从表面上看,在不知道google.com存在的情况下尝试访问google.com是不可能的。不过我想我明白你想做什么。我假设AJAX请求是作为对某些用户操作的响应发送的,例如单击按钮。您可以使用所需的值将数据属性附加到该按钮,以便以某种资源无关的方式发出这些请求

大概是这样的:

Route::resource('faq', 'ProductFaqController');
 $.ajax({
    url:'store',
    dataType:'json',
    success:function(data){
        console.log(data);
    }
});
 <button class="test" data-resource="faq">Click me!</button>

 $('.test').on('click', function(e) {
    var resource = $(this).data("resource");

     $.ajax({
        url: '/' + resource,
        dataType:'json',
        type: 'post',
        success:function(data){
            console.log(data);
        }
    });
});

被接受的答案不能回答我的问题,可能是因为我问得不好。我的问题是,我想利用Laravel的路由命名功能,这样我就不必将faq硬编码到我所有的JS文件中。如果该控制器的名称更改,那么我需要在每个js文件中进行更改。在做了更多的研究之后,我发现这个图书馆正是我想要的。我还没有尝试实现它,但它似乎实现了我所需要的:。

没错,由于在使用Route::resources声明路由时,Laravel为您提供了RESTful路由,因此执行store操作时会将一个帖子发送到资源的名称FAQ,我认为应该是php artisan Route:list而不是php artisanroutes@rhand在Laravel4中,是php artisan routes,看起来有些Laravel4文档已经开始丢失或者它从来就不在那里,但我找到了一个。我接着补充说,谢谢你指出。你已经接受的答案被修改为一条评论。请删除并取消标记,因为它会有误导性,或者如果可能的话,发布你自己的答案或标记另一个正确的答案,如果它是可用的。