ajax リクエストが処理されるまで、ドロップダウンとブラウザがロックされるという問題があります。JSON Ajax リクエストでは ASYNC を False に設定する必要があることを知っているので、Ajax リクエストが受信されるまでドロップダウンとページがロックされないようにコードを変更していただけると助かります。
ここで確認できます:
5秒追加しました。問題をより明確にするために data.php ファイルにスリープします。
ajax リクエストが処理されるまで、ドロップダウンとブラウザがロックされるという問題があります。JSON Ajax リクエストでは ASYNC を False に設定する必要があることを知っているので、Ajax リクエストが受信されるまでドロップダウンとページがロックされないようにコードを変更していただけると助かります。
ここで確認できます:
5秒追加しました。問題をより明確にするために data.php ファイルにスリープします。
これを行う別の方法を提案させてください。
$.get(url, function(res){
data = JSON.parse(res);
$(data).each(function(k,v){
$('#makes').append( html )
}
}
非同期 AJAX でエラーが発生する理由は、サーバーから応答を受け取る前に、関数がすぐに返されるためです。したがって、ガベージデータを呼び出しJSON.parse()
ているため、表示されているエラーが発生しています。
解決策は、サーバーからの応答を取得した後に解析を行うことです。
if(year !=""){
//Get vehicle json and store into vehicles_json
getJson(
js_base_url,
function(makes_json) {
//Set makes equal to makes dropdown
var makes = $("#make");
//empty dropdown
makes.empty();
var makes_array = [];
//loop through makes_json json
$.each(makes_json, function() {
makes_array.push('<option value="', this.model_make_display, '">', this.model_make_display, '</option>');
});
makes.html(makes_array.join(''));
}
);
}
function getJson(url, callBack) {
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
global: false,
success: function(json_response) {
callBack(json_response);
}
});
}