0

我在调试另一个问题时检查了 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");
    }
}
4

0 回答 0