我正在检查Safari中的错误控制台,同时调试另一个问题(该问题现已修复),我注意到它显示消息“RangeError Maximum Call Stack Size Exceeded”。通过评论代码,我能够找出导致问题的原因。然而,从搜索周围,我还没有发现任何其他人有Jquery $ .get()导致问题。我对ajax并不熟悉,但从查看代码我看不到任何可能导致此问题的递归。此外,如果我在成功函数中注释掉代码,我仍然会收到错误。但是,如果我注释掉$ .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");
}
}