PHP无限Ajax循环:任何问题


PHP Infinite Ajax loop : any problems?

我的问题: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为true,它将再次执行ajaxcall()

something条件每次都为true的情况下,它会在导航器或服务器或其他方面引起一些问题吗?如果"是的,会有大问题",有什么方法可以防止这种情况发生?

感谢您的关注。。。

回答后更新

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

如果有人有恶意,请打开navigator检查器,在表单中查找输入的名称以生成数据[在本例中为"log"answers"pwd"],并使用navigator控制台使用此类代码查找登录名[和密码后]。

在对返回的数据设置条件时。

 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>

错误的登录和错误的密码返回错误的登录消息。正确的登录和错误的密码会返回错误的密码消息。

这取决于你想做什么。如果你想显示通知消息或类似的东西,那么你可能应该使用setTimeout函数。因此,当它为假或继续时,它停止。

此外,您应该考虑使用GET而不是POST。Get发送一个标头并且相对较快。

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

当然,这可能会导致一个问题,不断地向服务器发出请求,而加载该页面的浏览器或其他客户端的数量又会加剧这个问题。。。如果你问它是否会给浏览器带来问题,浏览器不会特别在意这种情况的发生,你可能只会看到随着越来越多的客户端不断访问你的服务器,这些请求完成的等待时间增加。。。为了防止这种情况发生,我建议重新访问服务器上的其他请求,看看是否有更好的方法来处理这种事情。。。