2016-08-16 70 views
-2

我有一個代碼,它會在while循環中增加一個URL參數,直到$ i等於10.發生這種情況時,它將顯示每個數字最多爲10(因爲這是$ i停止時增加) - 在這種情況下,它將是1,2,3,4,5,6,7,8,9。逐個顯示每個結果

問題是隻有當$ i等於10時才顯示1, 2,3,4,5,6,7,8,9 - 我需要它顯示它發生的數字(而不是等待$ i等於10!)。

<div id="here"></div> 

<script> 
$(document).ready(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "test2.php", 
      success: function(data) { $("#here").html(data); } 
     }); 
}); 
</script> 

test2.php:

while($content = file_get_contents('https://www.example.com?id='.$i)) { 
    if($i !== 1000000) { 
     echo $i; 
    }else{ 
     break; 
    } 
    $i++; 
} 

我已經發現了下面的代碼將解決我的問題是有用的,但它會帶我永遠寫出1到1000000在arr

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 

$({}).queue("ajax", $.map(arr, function(item, i) { 
    return function(next) { 
    return $.ajax({ 
       type: "POST", 
       url: "test2.php", 
       data: {n:item} 
      }) 
      .then(function(data) { 
      $("#here").append(data); 
      next(); 
      }); 

    } 
})).dequeue("ajax") 

test2.php:

if (isset($_POST["n"])) { 
    $content = file_get_contents("https://www.example.com?id=" . $_POST["n"]); 
    echo $content 
} 

回答

0

爲什麼你不能寫一個循環來獲得該數組?

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9.......]; 

我知道這不會解決你的問題(問題),但要記住,你正試圖在這裏李爾東西...你應該知道,簡單的循環,將節省您的時間。

+0

正如我所說,這將永遠一路寫上去1000000 –

+0

沒有...只是檢查這︰https://jsfiddle.net/maky/b1excL3t/ – fernando

+0

這似乎不工作,因爲我必須循環像1000000和頁面不加載 –

0

您可以使用setInterval函數以這種方式每秒調用一次ajax。

function getData(val) { 
    $.ajax({ 
    type: "POST", 
    url: "test2.php", 
    data: {n: val} 
    success: function(data) { 
     $("#here").html(data); 
    } 
    }); 
} 


var x = 1; // initial value 
var intervalID = setInterval(function() { 

    getData(x); 

    if (++x === 1000000) { // 10000000 is the last value 
    window.clearInterval(intervalID); 
    } 
}, 1000); //1000 milliseconds 
0

只需使用一個簡單的for循環,而不是製造不必要的數組:

for (var i = 1; i < 10; i++) { 
    $.ajax({ 
     type: "POST", 
     url: "test2.php", 
     data: { n: i}, 
     success: function(data) { 
      $("#here").html(data); 
     } 
    }); 
}