【发布时间】:2017-03-22 10:24:39
【问题描述】:
我按照 this 教程在 laravel 应用程序中使用 AJAX 和 Eloquent(访问数据库)创建实时搜索。现在我想知道,如何使搜索结果可点击,所以我点击的东西被输入到输入字段中。不知何故,只是添加一个点击处理程序,然后将.val() 设置为查询似乎不起作用(预计我犯了一个错误)... PS:我也在使用 jQuery。
我怎么能这样做?准确地说,这里是代码:
刀片模板:
<div id="content">
<input type="search" name="keyword" placeholder="Search Names" id="searchbox">
<div id="results"></div>
</div>
里面有JS(不用奇怪,我加了一个小东西,等待用户完成输入后再发送AJAX请求):
$(document).ready(function () {
var typingTimer; //timer identifier
var doneTypingInterval = 300; //time in ms (5 seconds)
$("#searchbox").on('keyup', function () {
clearTimeout(typingTimer);
if ($('#searchbox').val()) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
});
});
//user is "finished typing," do something
function doneTyping() {
var key = $('#searchbox').val();
if (key.length >= 3) {
$.ajax({
url: '/categorysearch/' + key,
type: 'GET',
beforeSend: function () {
$("#results").slideUp('fast');
},
success: function (data) {
$("#results").html(data);
$("#results").slideDown('fast');
}
});
}
}
和php文件/函数处理:
public function Index(Request $request){
$query = "%".$request->categorySearchTerm."%";
$categories = Subcategory::where('name','LIKE',$query)->get();
foreach($categories as $category){
echo "<div id='item'>$category->name</div>";
}
}
现在我怎样才能得到我想要的,所以点击item会将item的内容放到输入字段中?
【问题讨论】:
-
echo "<div id='item' onClick="$('#searchbox'.val('".$category->name."'));">$category->name</div>";代替你在 foreach 中的代码 -
看起来很合理,但只有一件事:在这个 php 文件中(在控制器中),我没有可用的 jquery(也许我的描述不够清楚),我只有它在刀片模板中。如果没有 jQuery,我怎么能做到这一点?
-
@mcklayin 刚试过这个:
echo "<div id='item' onClick="document.getElementById('searchbox').setAttribute('value', $category->name);">$category->name</div>";但它不起作用,说Parse error: syntax error, unexpected 'document' (T_STRING), expecting ',' or ';'
标签: javascript php jquery ajax laravel