私はこの問題に頭を悩ませようとしています。非常に単純な jQuery ajax 呼び出しを使用して、データベースから値を取得し、いくつかの選択要素にその値を入力します。すべてが JSON として返されます。ほとんどのブラウザーでシームレスに動作しますが、クライアントは、クライアントもクライアントも結果を見ていないと報告しています。
コードが実行されていることを確認するために、途中でいくつかの Console.log() コマンドを追加しました。問題の URL への ajax GET が機能する場合もあれば、STILL が 200 OK を返す場合もありますが、コードは単にそれ以上実行されず、エラー コールバックに ajax エラー メッセージは表示されません。
これが私が使用しているコードです。一部のブラウザが窒息する可能性がある明らかな何かを誰かが見つけることができますか? もしよろしければ、次の点をご指摘いただけますと幸いです。
var $j = jQuery.noConflict(true);
$j(document).ready(function(){
//console.log("jQuery has loaded");
//console.log("attempting to load country list via AJAX call now");
$j.ajax({
url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=countries&rand='+Math.random(),
success: function(data){
//console.log("Successfully got country list, going to populate the dropdown now");
if(data.length){
$j("#country").children("option:not(:first)").remove();
$j("#country").attr("disabled", false);
$j.each(data, function(resultIndex, result){
var o = new Option();
$j(o).html(result.country).val(result.country);
$j("#country").append(o);
})
//console.log("Country list should be populated now?");
}
},
error: function (xhr, ajaxOptions, thrownError){
//console.log(xhr.responseText);
console.log(thrownError);
},
dataType: 'json',
cache: false
})
$j("#country").live('change', function(){
var id = $j(this).val();
if(id == ""){
$j("#province").attr("disabled", "disabled");
$j("#town").attr("disabled", "disabled");
return false;
}
$j.ajax({
url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=provinces&c='+id+'&rand='+Math.random(),
success: function(data){
if(data.length){
$j("#province").children("option:not(:first)").remove();
$j("#province").attr("disabled", false);
$j.each(data, function(resultIndex, result){
var o = new Option();
$j(o).html(result.province).val(result.province);
$j("#province").append(o);
})
}
},
dataType: 'json',
cache: false
})
});
$j("#province").live('change', function(){
var id = $j(this).val();
if(id == ""){
$j("#town").attr("disabled", "disabled");
return false;
}
$j.ajax({
url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=towns&p='+id+'&rand='+Math.random(),
success: function(data){
if(data.length){
$j("#town").children("option:not(:first)").remove();
$j("#town").attr("disabled", false);
$j.each(data, function(resultIndex, result){
var o = new Option();
$j(o).html(result.town).val(result.town);
$j("#town").append(o);
})
}
},
dataType: 'json',
cache: false
})
});
})
コンソールがないため、クライアントが IE でエラー メッセージを受け取っていたという純粋な事実のために、Consol.log コマンドをコメントアウトしました。
編集:これが同じドメインリクエストであり、したがって同じオリジンポリシーに従うことを言及できませんでした
完全なサイトはここにあります: http://www.topplaces.co.za/ 右側には、国で始まり、Province が選択されるまで AJAX 呼び出しを開始する動的選択グループがあります。問題は、多くの人が国は彼らにとって負荷がないと言っています...
敬具、サイモン