已部署的Laravel应用无法处理通过Ajax传递给控制器 的变量

问题描述 投票:1回答:1

我在本地环境中创建了一个Laravel应用,它运行良好。当我将它部署到VPS服务器时,出于某种原因在线访问它,我的AJAX停止工作。这是一个非常简单的AJAX函数的示例,该函数在本地可用,但在我的服务器上不起作用。

The view

<html>
<head>
    <title>Ajax Example</title>
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
    </script>

    <script>
        function getMessage() {
            $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'GET',
                url: '/getmsg',
                data: {
                    greeting: 'Hello'
                },
                success: function (data) {
                    $("#msg").html(data.msg);
                }
            });
        }
    </script>
</head>

<body>
<div id='msg'>This message will be replaced using Ajax.
    Click the button to replace the message.
</div>
<?php
echo Form::button('Replace Message', ['onClick' => 'getMessage()']);
?>
</body>

</html>

The controller

class TestAjaxController extends Controller {
    public function index(Request $request) {
        return response()->json(array('msg'=> $request->greeting), 200);
    }
}

The route

//Test routes
Route::get('ajax-test',function() {
    return view('ajax-test');
});
Route::get('/getmsg','TestAjaxController@index');

此功能的全部作用是,通过单击按钮将其发送给控制器的已定义变量,然后控制器向视图返回带有相同消息的响应,然后Jquery将文本更改为消息。

问题是,当按下按钮时,没有数据被传递给控制器​​,因此控制器返回空数组

注意:我的本地环境使用Apache(XAMPP),但是我的VPS使用NGINX。虽然我怀疑这是这里的问题。

我完全迷失在可能出了问题的地方。也许我的VPS安装中缺少某些PHP模块或类似的模块?

ajax laravel nginx vps php-7.3
1个回答
0
投票

您实际上正在访问表单字段。直接来自文档

Retrieving Input Via Dynamic Properties

您还可以使用Illuminate \ Http \ Request实例上的动态属性访问用户输入。例如,如果您的应用程序表单之一包含name字段,则可以像这样访问该字段的值:

$name = $request->name;

使用动态属性时,Laravel首先会在请求有效负载中查找参数的值。如果不存在,Laravel将在路线参数中搜索该字段。

因此,请尝试使用$request->query('name'),例如TestAjaxController应该是

class TestAjaxController extends Controller {
    public function index(Request $request) {
        return response()->json(array('msg'=> $request->query('greeting')), 200);
    }
}

我没有测试,但是应该可以。希望这会对您有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.