0

私はこのコードを持っています:

var suggest=$.ajax({
    cache: true,
    type: 'GET',
    url: solrServer + "suggest?q=" + valore + ec + "wt=json&omitHeader=true&json.wrf=?",
    dataType: "jsonp",
    success: function (data) {
        data = parse();
        function parse() {
            var parsedQueries = [];
            for (var i = 0; i < data.spellcheck.suggestions[1].suggestion.length; i++) {
                console.log('i_esimo: ' + data.spellcheck.suggestions[1].suggestion[i]);
                parsedQueries[i] = data.spellcheck.suggestions[1].suggestion[i];
            }
            return parsedQueries;
        }
    }
});
console.log('suggest: ' + suggest);

コンソールで印刷すると:

console.log('i_esimo: ' + data.spellcheck.suggestions[1].suggestion[i]);

応答のすべての要素を視覚化し、それを配列 parsedQueries に割り当てた後、最終的に parsedQueries を返します。これを var 提案に割り当てる必要がありますが、コンソール提案に出力すると、

suggest: [object Object]

私の値の配列ではありません。問題は、jQuery.ajax() の「成功」から値の配列 (文字列) を返すにはどうすればよいかということです。

4

2 に答える 2

1

ajax は非同期で実行されるため、ajax リクエストから値を返すことはできません。

async: false考えられる解決策の 1 つは、フラグを使用して要求を同期させることですが、お勧めしません。

別の解決策は、コールバック メソッドを使用して、ajax リクエストの結果を処理することです。

于 2013-06-17T10:26:00.043 に答える
0

JSON encodeサーバー側で配列をオブジェクトとして転送し、この目的のために ajax 呼び出しでJSON言及する必要があります。dataType :'JSON'

于 2013-06-17T10:29:56.870 に答える