2013-11-30 2 views
2

Мой вопрос: Может ли бесконечный цикл вызова ajax создать проблему?PHP Infinite Ajax loop: любые проблемы?

Учитывая есть код, как:

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 всегда имеет значение true, может ли оно вызвать некоторые проблемы в навигаторе или на сервере или что-то еще? И в случае «да, будет большая проблема», каковы способы защиты от этого?

Спасибо за внимание ...

UPDATE после ответа

Я спрашиваю это потому, что в проверке моей страницы регистрации WordPress, мне было интересно, было желание случилось:

Если кто-то с плохим заведите инспектор навигатора, чтобы найти имя входов внутри формы для генерации данных [в данном случае «журнал» и «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> 

Плохой Логин и пароль не возвращать плохое сообщение для входа. Хороший логин и неверный пароль возвращают сообщение с плохим паролем.

+0

В принципе, если вам нужно это сделать, то вы делаете что-то неправильно. Было бы лучше сказать нам, что именно вы пытаетесь сделать, чтобы мы могли направлять вас в правильном направлении, а не просто спрашивать, является ли это проблемой. –

ответ

0

Возможно, вы захотите сделать второй звонок с помощью короткого набораTimeout(). Помимо этого, это довольно распространенная техника, единственная проблема, которую она вызывает, - это поднять ваши запросы.

0

Уверен, что это может вызвать проблемы, постоянно поражая ваш сервер запросами, что усугубляется количеством браузеров или других клиентов, на которых загружена эта страница ... Если вы спрашиваете, вызовет ли это проблему для браузер, браузер не будет особо заботиться о том, что это происходит, вы просто можете увидеть увеличенное время ожидания для этих запросов, поскольку все больше клиентов нажимают на ваш сервер постоянно ... Чтобы защитить от этого, я бы рекомендовал пересмотреть остальные вы иметь этот постоянный запрос, ударяющий по серверу, и посмотреть, есть ли лучший способ справиться с такими вещами ...

1

Это зависит от того, что вы пытаетесь сделать. Если вы хотите отобразить уведомление или что-то подобное, вы должны, вероятно, использовать функцию setTimeout. Так он останавливается, когда его ложь или продолжается.

Также вы должны рассмотреть возможность использования GET вместо POST. Получает отправку одного заголовка и быстрее сравнивается.

+0

+1 для упоминания о пользе GET. – dotancohen