没有表单的Laravel 5.6 Ajax发布

时间:2018-06-22 21:47:28

标签: php ajax laravel

我想使用带有selectize的ajax在onchange上加载bdd结果。 我需要使用post,因为我必须将数据发送到我的网址。

我的功能如下:

select_etages.load(function(callback) {
        xhr && xhr.abort();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        var data = { id:value }
        xhr = $.ajax({
            type: 'post',                
            dataType: 'json',
            data: JSON.stringify(data),
            data : { bat : value },
            url: 'add/etages',
            success: function(results) {
                callback(results);
            },
            error: function() {
                callback();
            }
        })
    });

在我的web.php中,我有这个:

Route::post('/lots/add/etages', ['as'   => 'lots.add_post.select', 'uses' => 'Copro\LotController@select2']);

还有我的控制器:

public function select(Request $request)
{
    return "test";
}

但是当我尝试使用它时,我的状态为“ 419未知”。我可以看到这是ajax发布和我的数据,但是我没有错误消息:

  

Symfony \组件\ HttpKernel \ Exception \ MethodNotAllowedHttpException   没有消息

如果我更改以使其正常运行,但不发布。

任何人都知道为什么我不能使用post ??

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

也许您只是将路由的“ select2”名称末尾重写为“ select”?

答案 1 :(得分:0)

我认为您需要在回调函数中删除$ .ajaxSetup函数。代码可能看起来像这样。

$(function(){
   $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });


 select_etages.load(function(callback) {
    xhr && xhr.abort();
    var data = { id:value }
    xhr = $.ajax({
        type: 'post',                
        dataType: 'json',
        data: JSON.stringify(data),
        url: 'add/etages',
        success: function(results) {
            callback(results);
        },
        error: function() {
            callback();
        }
    })
  });

});