如何使用laravel5 ajax帖子

时间:2016-02-28 03:36:38

标签: ajax laravel

我无法通过$ request-> ajax(),我可以获得和dd($ data),但它总是返回false,我的代码有什么问题。任何人都可以帮助我?感谢。

路线

Route::post('test', 'BlogController@test');

视图

<form method="POST" id="form-ajax" action="/test">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="form-group">
        <label for="name1">Name1</label>
        <input type="text" class="form-control" name="name1" id="name1">
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary" id="test_btn">
            Submit
        </button>
    </div>
</form>

控制器

public function test(Request $request)
{
    $data = $request->input('name1');
    if ($request->ajax()) {
        $response = array(
            'name' => $data,
            'status' => 'success',
        );
        return response()->json($response);
    } else
        return response()->json(['msg' => 'false']);
}

JS

$(document).ready(function() {
            $('#test_btn').click(function() {
                $.ajax({
                    url: '/test',
                    type: 'post',
                    data: {'_token': $('input[name=_token]').val(), 'name1': $('input[name=name1]').val()},
                    success: function(data) {
                        console.log(data);
                    },
                    headers: {'X-Requested-With': 'XMLHttpRequest'},
                    dataType: 'json'
                });
            });
        });

1 个答案:

答案 0 :(得分:0)

如果你深入研究代码,你会发现$ request-&gt; ajax()方法依赖于这个逻辑(参见vendor / symfony / http-foundation / Request.php):

$this->headers->get('X-Requested-With');

jQuery默认设置此标头。您应该做的第一个操作 - 在浏览器的Developer Tools中查看您的AJAX调用。您可以在那里看到完整的HTTP标头 - 标头是否包含此X-Requested-With行?

如果它不存在(不太可能,但谁知道),您可以手动将其添加到您的AJAX数据对象,例如:&#34; X-Requested-With&#34;:&#34; XMLHttpRequest&# 34。

另外,我建议更换$ data = $ request-&gt; get(&#39; name1&#39;);与

$data = $request->input('name1');

获取输入变量的更正确的方法(get()方法甚至不存在于文档中)。