jQuery отправляет ajax-запрос на домашнюю страницу .. если идентификатор существует, добавьте класс на текущую страницу - PullRequest
0 голосов
/ 13 мая 2011

Я не уверен, что это правильный способ ведения дел, но, надеюсь, кто-то поймет. Мне просто нужно отправить запрос на домашнюю страницу и проверить, существует ли идентификатор, если он существует, мне нужно добавить класс к идентификатору на текущей странице (или сделать другой jQuery в этом отношении). Я думаю, что с моим URL что-то не так, потому что он отлично работает, когда я на самом деле на главной странице.

$(document).ready(function () {
$.ajax({
  url: "/",
  context: document.body, 
  success: function(){
       if ($('#welcome').length == 1 )
            {    
                    $('#login').addClass("done");        
             }   
  }
});
});  

Ответы [ 4 ]

1 голос
/ 13 мая 2011

Проблема в том, что вы проверяете текущую страницу, когда делаете этот звонок,

 if ($('#welcome').length == 1 )

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

  success: function(data){
       if ($(data).find('#welcome').length >= 1) {    
           $('#login').addClass("done");        
       }   
  }
1 голос
/ 13 мая 2011

Поскольку запрос AJAX будет возвращать то, что страница отображает в виде данных, вы можете просто выполнить поиск этих данных по идентификатору:

$.ajax({
  url: "/",
  context: document.body, 
  success: function(data){
       if (data.indexOf('id="welcome"') >= 0) {    
           $('#login').addClass("done");        
       }   
  }
});

Однако, как сказал @Paramount, это не хороший способ проверить, вошел ли кто-то в систему.

0 голосов
/ 13 мая 2011

Другая вещь, которую вы могли бы сделать, это создать глобальную переменную пространства имен (глобальную для вашего кода), которая сохраняет зарегистрированное состояние, например,

var myjQ {
    ...
    loggedIn : false;
    ...
}

if myjQ.loggedIn {
    // do stuff
} else {
   // do other stuff
}
0 голосов
/ 13 мая 2011

Попробуйте:

$(document).ready(function () {
$.ajax({
 url: "/",
context: document.body, 
success: function(){
   if ($(this).find('#welcome').length > 0)
        {    
                $('#login').addClass("done");        
         }   
}
});    
}); 

Или:

$(document).ready(function () {
$.ajax({
 url: "/",
context: document.body, 
success: function(){
   if ($(this).attr('id') == 'welcome')
        {    
                $('#login').addClass("done");        
         }   
}
});    
}); 

Или (на примере PHP):

    <?php
    if (isset($loggedin)) {
    ?>
    <script>
    $(document).ready(function () {
    $('#login').addClass("done");
    });
</script>
    <?php
    }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...