我编写了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)"
答案 0 :(得分:0)
好问题!
为了提供一些上下文,Laravel是在另一个PHP框架Symfony的基础上构建的,并共享许多软件包。这样的程序包称为var-dumper
,这就是在Laravel中启用dd
帮助程序功能的原因。
直接从dd
帮助程序包中获取以下示例:
//...
<script>
Sfdump = window.Sfdump || (function (doc) {
//...
您熟悉吗?如果您查看的是要在浏览器中手动运行的页面源,则将看到完全相同的代码。事实证明,您在AJAX请求中看到的毕竟是正确的-这只是浏览器尚未转换的原始HTML内容。
如果要输出非dd内容(例如,未用脚本标签和其他标签标记),请尝试使用PHP的内置die('Your message')
方法(仅用于调试!)或坚持使用Laravel内置的response()->json
方法中。
希望有帮助!