Laravel Ajax POST请求不起作用:找到302

时间:2017-02-23 21:50:54

标签: javascript php jquery ajax laravel

我正试图通过Laravel中的ajax推送一些数据。不幸的是它不起作用。当我在观看网络流量时,我发现了这个:

Request Method:POST
Status Code:302 Found

我正在尝试从JSGrid获取数据,该工作正常。数据对象已填充。我检查了一下。为了测试,我刚刚在控制器中返回了一条短消息。但是,当我发送POST请求时,它甚至都没有被调用...

这是我的代码

使用Javascript:

$.ajaxSetup({
    headers: {'X-CSRF-Token': $('meta[name=token]').attr('content')}
});
$('#save_list').click(function (e) {
    e.preventDefault();
    var url = '{{ route("account.save_accounts_to_user") }}';
    var post = {};
    post.account_list = $("#jsGrid").jsGrid("option", "data");

    $.ajax({
        type: "POST",
        url: url,
        dataType: 'JSON',
        data: post,
        cache: false,
        success: function (data, textStatus, jqXHR) {
            console.log(textStatus + " - " + data);
            return data;
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(jqXHR.responseText + textStatus + " - " + errorThrown);
        }
    });
    return false;
});

路线:

Route::post('save_accounts_to_user', ['as' => 'account.save_accounts_to_user', 'uses' => 'AccountController@saveAccountsToUser']);  //ajax request   

控制器:

/**
 * Save all used accounts for a user.
 *
 * @param  \Illuminate\Http\Request $request
 * @return \Illuminate\Http\Response
 */
public function saveAccountsToUser(Request $request)
{
    $response = array();
    $response["status"] = "ok";
    $response["message"] = trans('account.accounts_saved');

    return \Response::json($response);
}

我原以为我会从控制器方法中获取JSON文本作为responsemessage。但相反,我没有调用想要的方法重定向。 我不知道那里发生了什么。没有为此路由分配中间件,这可能是此重定向的原因。

你有想法吗?

3 个答案:

答案 0 :(得分:2)

毕竟它是一个外部组的中间件,它正在重定向请求-.-

答案 1 :(得分:0)

添加此代码:

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

之后:

var url = '{{ route("account.save_accounts_to_user") }}';

答案 2 :(得分:0)

在 AJAX 调用中使用标头

示例:

$.ajax({
   type: "POST",
   url: link, // your link
   data: DataObject, // data to pass
   headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
   },
   success: function (result) {
   }
});