我正在尝试从出现错误的数据库中检索邮政编码-传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须为数组类型,给定字符串。我不确定查询中的位置是否正确。提前致谢。
$ countiesList数组看起来像= [“” Beaverhead“,” Big Horn“,......]
该模型中的功能是:
public static function counties_zip($countiesList)
{
$zipCodes= Zip::select('ZIPCode')
->distinct()
->whereIn('CountyName', $countiesList)
->orderBy('ZIPCode', 'asc')
->get();
return $zipCodes;
}
在控制器中:
public function zipCodes(Request $request) {
$zipCodes = Zip::counties_zip($request->counties);
return json_encode($zipCodes);
}
和我的jS:
$(".submit").on("click", function(){
myList = [];
$('.select2 option:selected').each(function() {
myList.push($(this).val())
});
$countiesList=myList;
console.log($countiesList);
$.ajax({
type: "get",
url: http_host + '/leads/regions/counties/zipcodes?counties=' + $countiesList,
data: { counties: $countiesList},
dataType: "json",
success: function (data) {
var htmlText = '';
for ( var i=0;i<data.length;i++ ) {
htmlText += '<div class="div-conatiner">';
htmlText += '<input type="checkbox">' + data[i].ZipCode;
htmlText += '<div>';
}
$(".main-div").append(htmlText);
}
});
});
最佳答案
我认为这是因为您正在使用GET
请求将多个counties
值传递给控制器,而不是在请求中使用正确的counties[]
参数。当前,如果要在函数中执行dd($countiesList);
,则不会获得数组,因为您没有将其传递给数组。您传递的是单个值。
要将参数指定为GET
请求中的数组,您需要执行以下操作:
/leads/regions/counties/zipcodes?counties[]=one&counties[]=two...
对于您尝试过滤的每个
counties
值。您可能希望将其构造为
POST
请求,例如data : {
counties: $countieList
}
应该作为
$.post(url, data, function(response){ ... });
或$.ajax(...)
请求中的值数组正确处理。