如何递归调用Ajax函数

问题描述:

我想知道如何以递归方式调用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

您可以创建一个功能,使Ajax调用并接受步骤作为参数:

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

你需要使用“json_encode()”功能在服务器端的PHP脚本,而不是简单的“回声”。 Javascript中的“eval()”方法尝试运行返回的文本。

你应该在writeName()函数编写代码:

echo json_encode(2); 
+0

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