【发布时间】:2016-10-20 16:28:53
【问题描述】:
我正在将一个项目转移到 Laravel 5。我在导航栏中有一个实时搜索功能,可以在您键入时列出数据库中的现有名称。
当我输入一个字母时,Ajax 中的 url 被调用,但它在网络检查中给出 500 错误。
有人知道解决办法吗?
搜索输入:
<form action="/search" class="search_form" method="get" autocomplete="off">
<div class="form-field">
<input type="text" name="s" class="search_keyword" id="search_keyword_id"
placeholder="Search the FTSE 100 & 250" required/>
<button type="submit" class="search_button" onclick="submitdata()">Search</button>
<div id="result">
</div>
</div>
</form>
JS 脚本
<script type="text/javascript">
$(function () {
$(".search_keyword").keyup(function () {
var search_keyword_value = $(this).val();
var dataString = 'search_keyword=' + search_keyword_value;
if (search_keyword_value != '') {
$.ajax({
type: "POST",
url: "/searching",
data: dataString,
cache: false,
success: function (html) {
$("#result").html(html).show();
}
});
}
return false;
});
$("#result").live("click", function (e) {
var $clicked = $(e.target);
if (e.target.nodeName == "STRONG")
$clicked = $(e.target).parent().parent();
else if (e.target.nodeName == "SPAN")
$clicked = $(e.target).parent();
var $name = $clicked.find('.name').html();
var decoded = $("<div/>").html($name).text();
$('#search_keyword_id').val(decoded);
});
$(document).live("click", function (e) {
var $clicked = $(e.target);
if (!$clicked.hasClass("search_keyword")) {
$("#result").fadeOut();
}
});
$('#search_keyword_id').click(function () {
$("#result").fadeIn();
});
});
路由:
Route::post('/searching', 'SearchController@index');
搜索控制器内部的索引功能:
class SearchController extends Controller
{
public function index()
{
$search_keyword = $_POST['search_keyword'];
$first_query = DB::table('ftse100')->select('name', 'symbol')->
where('symbol', 'like', '%' . $search_keyword . '%')->orWhere('name', 'like', '%' . $search_keyword . '%');
$query = DB::table('ftse250')->select('name', 'symbol')->
where('symbol', 'like', '%' . $search_keyword . '%')->orWhere('name', 'like', '%' . $search_keyword . '%')
->union($first_query)->get();
$bold_search_keyword = '<strong>' . $search_keyword . '</strong>';
if ($query) {
foreach ($query as $rows) {
echo '<div class="show" align="left"><span class="name">' . str_ireplace
($search_keyword, $bold_search_keyword, $rows['name']) . '</span></div>';
}
} else {
echo '<div class="show" align="left">No matching records.</div>';
}
}
【问题讨论】:
-
您能否提供有关您遇到的 500 错误的更多信息?将
debug转为 true 以获取更多详细信息。