我的问题: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()进行第二次调用。除此之外,这是一种非常常见的技术,它引起的唯一问题是提高您的请求。
当然,这可能会导致一个问题,不断地向服务器发出请求,而加载该页面的浏览器或其他客户端的数量又会加剧这个问题。。。如果你问它是否会给浏览器带来问题,浏览器不会特别在意这种情况的发生,你可能只会看到随着越来越多的客户端不断访问你的服务器,这些请求完成的等待时间增加。。。为了防止这种情况发生,我建议重新访问服务器上的其他请求,看看是否有更好的方法来处理这种事情。。。