控制器:
public function ajaxsearch(Request $request)
{
if ($request->ajax()) {
$output = "";
$productindex = Product::where('product_name', 'LIKE', '%' . $request->states . '%')->take(4)->get();
if ($productindex) {
foreach ($productindex as $key => $value) {
$output .= '<div>
<img src="/images/'. $value->slidephoto->first()->sm_photo .'.jpg" width="400px">
<h3>'. $value->product_name .'</h3>
</div>';
}
return Response($output);
}
}
return view('main.ajax');
}
jquery的:
$('#searchinput').on('keyup', function(){
$value=$(this).val();
$.ajax({
type: 'get',
url: '{{URL::to('ajaxsearch')}}',
data: {'states':$value},
success:function(data){
$('#fixedsearch').html(data);
}
});
});
当ajax获取的值不是英文时,我在控制台日志中遇到此问题。
191.js:5 GET http://localhost:8000/ajaxsearch?states=%CF%80 500 (Internal Server Error)
我正在使用Laravel 5.1和jquery v.1.9.1。 我作为补充使用的外语是希腊语,我有这个特定的问题。
答案 0 :(得分:2)
如果您传入了URL编码字符,则可以使用urldecode
将其转换回正确的字符。
由于URL编码字符基本上是包含百分号的字符串,因此当您连接更多百分号时,此确实会混淆SQL。
Product::where('product_name', 'LIKE', '%' . $request->states . '%')
$request->states
为%CF%80
,因此创建的SQL看起来像... from product where product_name like %%CF%80%
- 在like
项检查中,百分号无意义。
相反,Product::where('product_name', 'LIKE', '%' . urldecode($request->states) . '%')
$request->states
现在为π
,因此创建的SQL看起来像... from product where product_name like %π%
。
答案 1 :(得分:-2)
尝试使用encodeURI()javscript函数
$('#searchinput').on('keyup', function(){
$value=$(this).val();
$.ajax({
type: 'get',
url: '{{URL::to('ajaxsearch')}}',
data: {'states':encodeURI($value)},
success:function(data){
$('#fixedsearch').html(data);
}
});
});