2013-04-30 107 views
0

我想在遠程php中發送主要請求之後並在獲得完整響應之前獲得數據回顯。遠程php運行時的Ajax響應

的目的是展示 「我差不多有 - 5個項目剩餘」 或similer ...

這是我目前的JS腳本:

function getdetails(){ 

    $("div#urltable").fadeOut('fast'); 
    $("div#ajaxLoading").fadeIn('fast'); 

    var checkurl = $('input#remoteurl').attr('value'); 
    if($("#checkBrokenLinks").prop('checked') == true){ 
     var checkonline = 'check'; 
    } 
    else { 
     var checkonline = 'skip'; 
    } 

    $.ajax({ 
     type: "POST", 
     url: "ajax-outlink_checker.php", 
     data: {checkurl:checkurl, checkonline: checkonline} 
    }).always(function(data) { 

     var $response   = $(data); 
     var whileRuningCount = $response.filter('#whileRuningCount').html(); 


     $("div#whileRuningCount").fadeOut('fast'); 
     $("div#whileRuningCount").fadeIn('fast'); 
     $("div#whileRuningCount").html(whileRuningCount); 
    }).done(function(result) { 

     var $response=$(result); 
     var urltable = $response.filter('#urltable').html(); 
     var whileRuningCount = $response.filter('#whileRuningCount').html(); 

     $("div#ajaxLoading").fadeOut('fast'); 
     $("div#urltable").fadeIn('fast'); 
     $("div#urltable").html(urltable); 

    }); 
} 

正如你可以看到 我添加.always()試圖抓住回聲的PHP文件中運行。 但是...我想我想知道如何使它工作,如果.always 甚至是它的方式去。

任何幫助將是最apreaciated。 祝好,Sagive。

回答

1

你需要做2個單獨的ajax調用。 1爲最初的請求,然後第二個按需要重複檢查狀態更新。動作響應者需要更新狀態響應者檢查的一些變量。您如何與其他響應者交流狀態取決於您。一種方法是簡單地使用文件。你的行動響應將調用handleaction()而狀態響應只會調用statuscheck()

<?php 
function handleaction() 
{ 
    $actions_left = 0; 
    while ($actions_left > 0) 
    { 
     perform_action(); 
     status_update(--$actions_left); 
    } 
} 
function status_update($remaining) 
{ 
    $filename = "/" . session_id() . "_action_status.txt"; 
    $fh = fopen($filename, "w"); 
    fputs($fh, $remaining); 
    fclose($fh); 
} 
function statuscheck() 
{ 
    $filename = "/" . session_id() . "_action_status.txt"; 
    echo @file_get_contents($filename); // js treats empty response as 0. 
} 
?> 
+0

感謝您的努力......我會這樣做,儘管它不是prefferd的方式。 – 2013-05-01 21:18:47

1

.always()不是這個意思。這只是表示請求是success/done()還是fail()運行該代碼段中的內容。

如果你想顯示一個「幾乎沒有。」消息,更好的方式是有另一個async call到每N秒server其投票,着眼於服務器中某些數據的狀態,(標誌可能?),並在此基礎上顯示在前端的消息..

+0

感謝隊友避免費勁。 – 2013-05-01 21:21:12