Javascript 并非所有循环都已处理,13200个循环中只有5655个循环
我有两个javascript循环,一个嵌套在另一个中,对服务器端进行AJAX调用。循环生成一对数字(latlng坐标),然后通过Javascript 并非所有循环都已处理,13200个循环中只有5655个循环,javascript,jquery,mysql,ajax,Javascript,Jquery,Mysql,Ajax,我有两个javascript循环,一个嵌套在另一个中,对服务器端进行AJAX调用。循环生成一对数字(latlng坐标),然后通过.getJSON()传递给服务器,并将其插入MySQL表中 问题:脚本运行约6分钟,总共有13200个AJAX调用。在chrome的webdeveloper工具中,它说5656/13646请求536.20KB/2.15MB。当我检查表格中插入的条目时,我只看到5655行!其他人怎么了 JS代码 for(var i = 0; i < 110; i++) {
.getJSON()
传递给服务器,并将其插入MySQL表中
问题:脚本运行约6分钟,总共有13200个AJAX调用。在chrome的webdeveloper工具中,它说5656/13646请求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){
});
}
}
(变量i=0;i<110;i++)的{
var lat_电流=lat_启动+lat_增量*i;
对于(var j=0;j<120;j++){
//做一些计算
//更多代码在这里。。。
//将LatLng插入数据库
$.getJSON(基本url+“插入到爬网”,
{
lat:lat_电流,
液化天然气:液化天然气单位电流
},
函数(json){
});
}
}
它可能正在计算返回值
5655/13200
5655是您发送的内容,/后面的数字是总数(包括返回值,是您第一个数字的2倍)。发送和接收json值。我在假设某种成功状态
还有一个问题是,在表中插入了多少重复值?您的表上有唯一的键吗?您应该创建一个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
});
var coords=Array()//创建一个数组来存储计算结果
对于(变量i=0;i<110;i++){
var lat_电流=lat_启动+lat_增量*i;
对于(var j=0;j<120;j++){
//做一些计算
//更多代码在这里。。。
//将结果附加到数组中
坐标推送({lat:lat_电流,lng:lng_电流});
}
//对服务器进行ajax调用,发送完整的JSON编码数组
coords=JSON.stringify(coords);
$.ajax({
键入:“POST',//您应该通过POST发送大块数据
url:url,
数据来源:coords,
成功:成功,
数据类型:JSON
});
您确定不是服务器死机了吗?我会检查少数ajax请求的响应。您的其余请求可能位于队列中。ajax请求是异步的,或非阻塞的,因此您的循环将尽可能快地执行,而实际的请求堆积在后台。没有添加新行等待10分钟后返回桌面。我如何判断是Chrome浏览器限制了AJAX调用的数量还是服务器拒绝了?最好是在计算完成之前保留客户端的所有内容,然后发出一个大http请求,然后发出13200个单独请求。您的内存可能超过5MBHTTP头与您的方式相同,如果您有cookie,您可以在不使用任何数据的情况下传输大约50MB的数据。表中有3列,第一列是唯一的键列和自动递增的id
列。服务器端没有重复检查。这是否意味着浏览器只向服务器发送5655个请求与上面应该发送的13200循环不同,这意味着Chrome限制了发送的请求数量??我认为第二个数字是总流量(发送和接收的请求)。您可以打印到屏幕或文件计数器以查看实际发出了多少请求吗?我的意思是jSON将返回一个对象(或成功)您的ajax请求正确吗?我应该将计数器放在.getJSON()
的回调函数中还是放在它之外?让我们来看看