別の問題をデバッグしているときに Safari のエラー コンソールを確認していたところ (その問題は現在修正されています)、「RangeError Maximum Call Stack Size Exceeded」というメッセージが表示されていることに気付きました。コードをコメントアウトすることで、問題の原因を特定できました。ただし、検索しても、Jquery $.get() が問題を引き起こしている人は他に見つかりませんでした。私は ajax にはあまり詳しくありませんが、コードを見てみると、この問題を引き起こす可能性のある再帰は見当たりません。さらに、success 関数のコードをコメントアウトしても、エラーが発生します。しかし、$.get 呼び出しをコメントアウトすると、エラー メッセージは消えます。アプリは正常に動作し、警告エラー メッセージは表示されませんが、これがより大きな問題になるのではないかと心配しています.
function update_database(newLat, newLng) {
if (navigator.onLine && connectStatus) {
$.get(GREEN_CAB_URL + "updatedatabase/", {
lat: newLat,
lng: newLng
}, function(data) {
data = data.substring(0, data.length - 1);
data = "{\"recs\":[" + data + "]}";
var arr = $.parseJSON(data);
var arrr = arr.recs;
if (clientdb) {
clientdb.transaction(function(tx) {
for (var i in arrr) {
tx.executeSql("INSERT OR REPLACE INTO ads (ad_id, sec_filename, filename, lng, lat, radius, first_img_url, second_img_url, days, was_removed, business, phone_number, start_time_everyday, end_time_everyday, is_vid) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ", [arrr[i].id, arrr[i].second_filename, arrr[i].filename, arrr[i].lng, arrr[i].lat, arrr[i].radius, '<img src="' + GREEN_CAB_URL + arrr[i].filename + '" class="ads" />', '<img src="' + GREEN_CAB_URL + arrr[i].second_filename + '" class="secondad"/>', arrr[i].days, arrr[i].was_removed, arrr[i].business, arrr[i].phone_number, arrr[i].start_time_everyday, arrr[i].end_time_everyday, arrr[i].is_movie], insert_query_success, insert_error);
} // end of for(var i in arrr)
}, function(err) {
alert("client.transaction error: " + err.message + "(code: " + err.code + ")")
}, update_database_success);
}
}).error("updatedatabase ERROR");
}
}