0

単一のクエリではなく、先行入力で json オブジェクトを返そうとしています。アイデアは、オートコンプリート メニューに追加のフィールドを渡して、結果を絞り込むことです。例年、メーカー、モデル、トリム。json オブジェクトには、filteredBy フィールド ID とフィールド値が含まれます。たとえば、make を検索すると、json オブジェクトにはフィルター フィールド ID「年」と値「2013」に加えて、現在のフィールド ID とその値が含まれます。

現在、これは以下で機能しますが、単一の値のみを返します。

 return $field.typeahead({
    replace: (uri, query) { 
       return extendURL(uri, "t:input": query);
    }
 }

これが私がやろうとしている方法です。

<input id="year" value="2013"/>
<input id="make" filterBy="year" value="ford"/>
<input id="model" filterBy="ford" value="fusion"/>


 init = function(spec) {
        var $field = $("#" + spec.id),
                filterIdArray = [];

        if (typeof spec.filterId !== 'undefined') {
            filterIdArray = spec.filterId.split(',');
        }

 return $field.typeahead({
    replace: function(uri, query) {
       var params = {};
           params["t:jsonStringField"] = searchField(spec.id, query);
           params["t:jsonStringFilter"] = searchFilter(filterIdArray);

       var stringify = JSON.stringify(params);

       //I'm trying to pass back this stringified json object.  
       return extendURL(uri, stringify);
    }
  }

    //The current search input
    searchField = function(fieldId, query) {
        return {name: fieldId, value: query};
    };

    //Additional fields used to create where clause within searchField
    searchFilter = function(filterIdArray) {
        var array = [];

        //Field Id's and any fields being filtered by
        for (var i = 0; i < filterIdArray.length; i++) {
            var value = $("#" + filterIdArray[i]).val(),
                 name = filterIdArray[i];

            array.push({name: name, value: value});
        };

        return array;
    };

次のエラーが発生します。

"NetworkError: 500 内部サーバー エラー - /TapDemo/sell/createlisting.year:autocomplete?category=aircraft&0={&1=%22&2=t&3=:&4=j&5=s&6=o&7=n&8=S&9=t&10=r&11=i&12= n&13=g&14=F&15=i&16=e&17=l&18=d&19=%22&20=:&21={&22=%22&23=n&24=a&25=m&26=e&27=%22&28=:&29=%22&30=y&31=e&32=a&33=r&34 =%22&35=,&36=%22&37=v&38=a&39=l&40=u&41=e&42=%22&43=:&44=%22&45=5&46=%22&47=}&48=,&49=%22&50=j&51=s&52=o&53=n&54 =S&55=t&56=r&57=i&58=n&59=g&60=F&61=i&62=l&63=t&64=e&65=r&66=%22&67=:&68=[&69=]&70=}"

私が間違っていることを誰かが知っていますか?

4

1 に答える 1

1

あなたがする必要があるのは、これらの値をjsonエンコードとして送信し、データを配列としてデコードして、これらの値を処理できるようにすることです。

于 2013-09-16T04:29:54.487 に答える