2016-03-27 63 views
0

我想從網站中提取所有鏈接,並逐個顯示它們,直到所有鏈接都被劃傷。PHP Ajax獲取所有鏈接並逐個顯示

PHP

$action = $_GET['action']; 

switch ($action) { 

case 'getlinks': 

foreach ($dom->getElementsByTagName('a') as $node) { 

$info = $node->getAttribute('href'); 

$showresult .= '<li>'.$info.'</li>'; 

} 

echo '<ul>'.$showresult.'</ul>'; 

break; 

} 

AJAX

function ajaxcall(action, div) { 

$.ajax({ 
    type: "POST", 
    url: "function.php?url=google.com&action="+ action, 
    data: $(this).serialize(), 
    success: function(data){ 

$(div).html(data); 

    } 
    }); 

} 

ajaxcall('getlinks', '.getlinks'); 

HTML

<div class="getlinks"></div> 

此代碼工作,但顯示質量的各個環節。我需要顯示加載每個鏈接< ul>一個接一個。

+0

您將不得不需要一個計數器來傳遞每個AJAX調用並增加該計數器的成功功能。在php頁面中使用該計數器以回顯正確的鏈接 – bugwheels94

+0

但是我不需要那麼有效,我需要它是真實的,我的意思是當鏈接被提取以立即顯示時。 –

+0

但是,這不是如何AJAX的工作,當頁面完成處理時加載服務器端頁面(在你的情況下循環) – bugwheels94

回答

-1

問題是,你正在抓住一個方法GET在你的php文件中,而你的ajax文件在POST方法中。請試試這個:

ajaxcall('getlinks', '.getlinks'); 

function ajaxcall(action, div) { 
    var info = 'action='+action+'&url=google.com'; 
    $.ajax({ 
     type: "POST", 
     url: "function.php", 
     data: info, 
     success: function(data){ 
      $(div).html(data); 
     } 
     }); 
} 

此外,您的切換條件是錯誤的。這是正確的:

<?php 

    $action = $POST['action']; 

    switch ($action) : 
     case 'getlinks': 

     foreach ($dom->getElementsByTagName('a') as $node) { 

     $info = $node->getAttribute('href'); 

     $showresult .= '<li>'.$info.'</li>'; 

     echo '<ul>'.$showresult.'</ul>'; 
    break; 
    endswitch; 

} 

?> 
+0

無效,對不起。 –

+0

因爲您正在使用$ showresult而無法使用。=。=。僅在您保存更多信息而非僅保存一行時才使用它。只需使用 $ showresult ='

  • '。$ info。'
  • ';和一個print_r –