2010-04-09 149 views
1

我想知道如何以遞歸方式調用Ajax函數。 我的AJAX代碼是這樣的,如何遞歸調用Ajax函數

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    var step='1'; 
    $.ajax 
    (

    { 
    url: 'test1.php', 
    data: {step: step},   
    success: function(output) 
    {           
     step=eval(output); 
     alert(step); 
    } 
    } 
); 

</script> 
</head> 
</html> 

和PHP代碼是這樣的

<?php 
function writeName() 
{ 
    echo "step=2"; 
} 
function ReadName() 
{ 
    echo "In Read Name Function"; 
} 
if(isset($_REQUEST['step']) && !empty($_REQUEST['step'])) 
{ 
    $step = $_REQUEST['step']; 
    switch($step) 
    { 
    case '1' : 
    writeName(); 
    break; 
    case '2' : 
    ReadName(); 
    break; 
    default : 
    echo "Empty String"; 
    } 
} 
?> 

第一次函數被調用步驟變量的值等於1個,函數寫名字修改了它作爲2.現在我想用Step變量值等於2來調用這個Ajax函數。以便第二個php函數被調用。

+0

旁白:你可以離開了'isset()函數'如果你已經檢查'空()'。 – janmoesen 2010-04-09 07:30:32

+0

@janmoesen Yah,我可以.thanx。 – MAS1 2010-04-09 07:35:15

回答

1

您可以創建一個功能,使Ajax調用並接受步驟作爲參數:

function getStep(step) { 
    $.ajax 
    (
    { 
     url: 'test1.php', 
     data: {step: step},   
     success: function(output) 
     {           
     step=parseInt(output); 
     alert(step); 
     if (step < 2) { 
      getStep(step); 
     } 
     } 
    } 
    ); 
} 
0

你需要使用「json_encode()」功能在服務器端的PHP腳本,而不是簡單的「回聲」。 Javascript中的「eval()」方法嘗試運行返回的文本。

你應該在writeName()函數編寫代碼:

echo json_encode(2); 
+0

@Sergey Kuznetsov:Thanx。我來了解一個新概念。 – MAS1 2010-04-09 07:38:21