【发布时间】:2019-06-30 22:56:47
【问题描述】:
我想用 ajax 和 vue 构建搜索。
所以我的所有文件都有一个名为“文件”的模型
然后我有一个名为 searchcontroller.php 的控制器
public function search(Request $request)
{
$files = File::where('name', $request->keywords)->get();
return response()->json($files);
}
这是我的路线
Route::post('/', 'SearchController@search');
我有一个 search.vue
<template>
<div>
<input type="text" v-model="keywords">
<ul v-if="results.length > 0">
<li v-for="result in results" :key="result.id" v-text="result.name"></li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
keywords: null,
results: []
};
},
watch: {
keywords(after, before) {
this.fetch();
}
},
methods: {
fetch() {
axios.get('/', { params: { keywords: this.keywords } })
.then(response => this.results = response.data)
.catch(error => {});
}
}
}
</script>
如果我输入一个字母,我认为 resposce 工作,但它显示了 10000 个列表点,结果为空
我想这样做:https://jsfiddle.net/hej7L1jy/2/
如果我这样做:
console.log(this.results);
console.log(this.keywords);
我得到结果:
数组(0)
关键字有效
【问题讨论】:
-
控制台记录您的结果以检查它们是否甚至具有名称属性
-
我在帖子中添加了它
-
收到响应后在 axios 调用中不记录它:)
-
axios.get('/', { params: { keywords: this.keywords } }) .then(response => console.log(response.data)) .catch(error => { });
-
一旦你记录了 axios 调用的响应,我就会知道我们必须使用的数据结构:)
标签: javascript ajax laravel search vue.js