PHP Infinite Ajax循环:有什么问题吗?

时间:2013-11-30 19:48:51

标签: php jquery ajax

我的问题:    无限循环的ajax调用是否会产生问题?

鉴于代码如下:

 ajaxcall();
 function ajaxcall(){

    jQuery.ajax({
        type: "POST",
        url: myurl,
        data: mydata,
        cache: false,
        success: function(data){
            if (something )
            {
                 ajaxcall();
            }
        },
        error: function(){},
        complete: function(){}
    });
 }

如您所见,在执行ajaxcall时,如果something为真,它将再次执行ajaxcall()

如果something条件每次都为真,是否会导致导航器或服务器或其他问题?如果“是的话会出现大问题”,有什么方法可以防止这种情况发生?

感谢您的关注......

更新后更新

我问这个是因为在检查我的WordPress登录页面时,我想知道会不会发生:

如果有意图的人,打开导航器检查员在表单中找到输入的名称以生成数据[在这种情况下'log'和'pwd'],并使用这种代码来查找登录名[,和在密码之后]使用导航器的控制台。

对返回的数据进行条件化。

 sendCheckFormAnswer();
 function sendCheckFormAnswer(){

    jQuery.ajax({
        type: "POST",
        url: myLoginPostUrl,
        data: {log:generatedLogin,pwd:generatedPassword},
        cache: false,
        success: function(data){
            if (data.indexOf(badLoginMessage)>=0)
            {
                 codeTogenerateANewLogin();
                 sendCheckFormAnswer();
            } else {
                 alert(generatedLogin);
            }
        },
        error: function(){},
        complete: function(){}
    });
 }

另外,这是我的登录表单页面:

<form name="loginform" id="loginform" action="http://www.###########.fr/wp-login.php" method="post">
    <p>
        <label for="user_login">Identifiant<br>
        <input type="text" name="log" id="user_login" class="input" value="" size="20"></label>
    </p>
    <p>
        <label for="user_pass">Mot de passe<br>
        <input type="password" name="pwd" id="user_pass" class="input" value="" size="20"></label>
    </p>
    <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever"> Se souvenir de moi</label></p>
    <p class="submit">
        <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Se connecter">
        <input type="hidden" name="redirect_to" value="http://www.saint-pierre-de-curtille.fr/wp-admin/">
        <input type="hidden" name="testcookie" value="1">
    </p>
</form>

错误的登录和错误的密码返回错误的登录消息。良好的登录和错误的密码会返回错误的密码消息。

3 个答案:

答案 0 :(得分:2)

这取决于你想要做什么。如果您要显示通知消息或类似的东西,那么您应该使用setTimeout函数。所以它在假的时候停止或继续。

此外,您应该考虑使用GET而不是POST。获取发送一个标题并且相对更快。

答案 1 :(得分:0)

您可能希望使用较短的setTimeout()进行第二次调用。除此之外,它是一种非常常见的技术,它引起的唯一问题是提高您的请求。

答案 2 :(得分:0)

当然它可能会导致问题,不断地向您的服务器发送请求,这会加上浏览器或其他已加载该页面的客户端的数量......如果您询问它是否会导致问题浏览器,浏览器不会特别关心这种情况发生,您可能会看到这些请求的等待时间增加,因为越来越多的客户端不断地点击您的服务器...为了防止这种情况,我建议您重新访问其余的这个不断的请求命中服务器,看看是否有更好的方法来处理这类事情......