如何在Laravel上使用Ajax?

时间:2019-10-20 05:02:10

标签: javascript ajax laravel

我编写了JavaScript代码来使用Ajax处理我的请求搜索请求。因此,我的代码定义如下:

if(document.getElementById('category')){
    document.getElementById('category').addEventListener('click', () => {
        var query = document.getElementById('category').value;
        if(query !== ''){
            var httpRequest = new XMLHttpRequest();
            httpRequest.open('GET', "http://127.0.0.1:8000/category/fetch");
            httpRequest.send();
            console.log(httpRequest);
        }
    });
}

我的category来自我的表单:

<div class="col s12 m8 l8">
    <input type="text" name="category" value="{{old('category') ?? $book->category ? $book->category->name : ''}}" class="input-field validate" id="category">
    <input type="hidden" name="category_id" value="{{ $book->category ? $book->category->id : ''}}">
</div>

我的get请求引用了我的函数:

public function fetch(Request $request){
    dd("You hit me: ".$request);
    $category = Category::where('name', 'like', $request['category'])->first();
    return response()->json($category);
}

但是回到我的JavaScript,为什么我的get请求没有达到我的提取函数?在浏览器上手动进行操作时,它会给我结果,同时我的控制台也给我这样的结果:

response: "<script> Sfdump = window.Sfdump || (function (doc)"

如下图所示。 Ajax Request

1 个答案:

答案 0 :(得分:0)

好问题!

为了提供一些上下文,Laravel是在另一个PHP框架Symfony的基础上构建的,并共享许多软件包。这样的程序包称为var-dumper,这就是在Laravel中启用dd帮助程序功能的原因。

直接从dd帮助程序包中获取以下示例:

//...
<script>
Sfdump = window.Sfdump || (function (doc) {
//...

Source

您熟悉吗?如果您查看的是要在浏览器中手动运行的页面源,则将看到完全相同的代码。事实证明,您在AJAX请求中看到的毕竟是正确的-这只是浏览器尚未转换的原始HTML内容。


如果要输出非dd内容(例如,未用脚本标签和其他标签标记),请尝试使用PHP的内置die('Your message')方法(仅用于调试!)或坚持使用Laravel内置的response()->json方法中。

希望有帮助!