0

我有 2 个 javascript 循环,一个嵌套在另一个循环中,它对服务器端进行 AJAX 调用。循环生成一对数字(纬度坐标),然后通过.getJSON()将其插入 MySQL 表的位置传递给服务器。

问题:脚本运行了大约 6 分钟,总共有 13200 次 AJAX 调用。在 chrome 的 webdeveloper 工具中,它说5656/13646 requests 536.20KB/2.15MB. 当我检查表中插入的条目时,我只看到 5655 行!剩下的怎么了?

JS代码

for(var i = 0; i < 110; i++) {
    var lat_current = lat_start + lat_increment * i;

    for(var j = 0; j < 120; j++) {

        // Do some calculations
        // More code here...

        // Insert LatLng into database
        $.getJSON(base_url + 'insert_latlng_to_crawl', 
            {
                lat: lat_current,
                lng: lng_current
            }, 
            function(json){
            });

    }

}   
4

2 回答 2

1

它可能正在计算返回值。

5655/13200

5655 是您发送的内容,/ 之后的数字是总数(包括返回值,即您的第一个数字的 2 倍)。发送和接收 json 值。我假设某种成功状态?

另外问题是有多少重复值被插入到您的表中?你的桌子上有唯一的钥匙吗?

于 2012-06-04T22:01:52.170 回答
1

您应该创建一个 javascript 对象,然后将其传递给服务器并在服务器端处理它

 var coords=Array();//Create an array to store the calculations
 for(var i = 0; i < 110; i++) {
    var lat_current = lat_start + lat_increment * i;

    for(var j = 0; j < 120; j++) {

    // Do some calculations
    // More code here...

    // append the results to the array
    coords.push({lat: lat_current, lng: lng_current});


}

//Make the ajax call to the server, sending the completed Array JSON encoded
coords= JSON.stringify(coords);
$.ajax({
  type: 'POST',//you should send big chunks of data via POST
  url: url,
  data: coords,
  success: success,
  dataType: JSON
});
于 2012-06-04T22:17:37.740 回答