【问题标题】:unable to send post request properly in laravel 5.1无法在 laravel 5.1 中正确发送 post 请求
【发布时间】:2026-02-20 17:25:01
【问题描述】:

我正在像 ajax 一样发送 post 请求

$.ajax({
        url: 'test',
        type: 'POST',
        data: { id: sessionStorage.getItem('user_id') },
        dataType: 'JSON',
        contentType: "application/json; charset=utf-8"/*,
        success:function(id){
        alert(sessionStorage.getItem('user_id'));
    }*/
    });

我的路线是

Route::post('test','FacebookControllers\MessageController@getUserMessages');
if($request->has('id'))
        {
            echo "yahoo";
        }

不打印字符串,表示请求未发送或变量。

【问题讨论】:

  • 您的控制台是否收到任何错误消息?

标签: ajax model-view-controller laravel-5.1


【解决方案1】:

您正在请求 json 数据,因此您必须像这样返回响应:

Route::post('test','FacebookControllers\MessageController@getUserMessages');
if($request->has('id')){
    return response()->json(['id' => 'yahoo']);
}
else{
    return response()->json(['id' => 'does not exist'])
}

现在在控制台打印结果以验证它:

console.log('id before ajax: ' + sessionStorage.getItem('user_id'));
$.ajax({
    url: 'test',
    type: 'POST',
    data: { id: sessionStorage.getItem('user_id') },
    dataType: 'JSON',
    contentType: "application/json; charset=utf-8"
    success:function(data){
        console.log('id after ajax: ' + data.id);
    }
});

【讨论】:

  • 我只得到id before ajax 值。我想指出的一件事是,在我的脚本下面我添加了$(function () { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('value') } }); });,如果我根据官方文档将value 更改为content,那么我会得到500 internal server error while sending the request
【解决方案2】:

我必须从 ajax 请求中删除 contentType,它对我有用。

【讨论】:

  • 这是因为 jQuery 期望从服务器返回 JSON 响应。