我正在尝试从出现错误的数据库中检索邮政编码-传递给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(...)请求中的值数组正确处理。

08-25 12:27