2013-04-30 32 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