?

Log in

No account? Create an account
 
 
24 Май 2009 @ 16:50
Проблемы с JQuery  
Дано: код на JQuery и масса глюков :)

Проблема в том, что на разных машинах код вёдет себя по-разному. Нужно заставить его работать нормально.

Скрипт с использованием JQuery отправляет ajax-запрос на сервер и обрабатывает ответ. Если пришёл ответ - выполняет какие-то действия, в зависимости от ответа. При возникновении ошибки генерирует сообщение об ошибке.

НО! При диагностике FireBug'ом выяснилось, что периодически ответ от сервера приходит, а скрипт всё равно генерирует сообщение об ошибке.
(в привёденном ниже скрипте это сообщение: "Сервер не отвечает.Повторите попытку")

Причём, на разных машинах ошибка вылезает с разной частотой.

Глюк происходит и при обработке пришедших данных как JSON, и обработке их как обычный текст.

В чём может быть проблема и как её разрулить?



$(document).ready(function(){
 // --------------

 function doLogin()
 {
  var login;
  var password;

  login = document.getElementById('login').value;
  password = document.getElementById('password').value;

  $.ajax({
   type: "POST",
   url: '/users/doLogin',
   data: {login: login, password: password},
   beforeSend: function ()
   {
    $('#loading').show();
    $('#error').hide();
   },
   success: function(data){
    // пришёл ответ от проведения платёжки
      if (data=='410') 
     {
         alert('Ошибка!\nВы слишком быстро повторили попытку входа.\nПовторите попытку более, чем через 10 секунд.');
     }else if (data=='403') {
         alert('Ошибка!\nНеверный пароль.');
         $('#error').show();
    }else if (data=='200') {
        window.location='/users/view/'+login;
        $('#okay').show();
    }else
        alert(data);
   },
   error: function(event, request, settings,error)
   {
       alert('Сервер не отвечает.\nПовторите попытку.');
   },
   timeout: 4000,
   complete: function ()

   {
    $('#loading').hide();
   }
  });
 }

 $("#loginButton").click(doLogin);
 // --------------
});

 
 
 
Евгений Ивановeugene_ivanov on Май, 24, 2009 18:51 (UTC)
во первых, если уж используете jQuery, то вот это

document.getElementById('login').value;

заменяется на $('#login').val()

и т.п.

во вторых. если у вас идёт на error, то попробуйте нижеследующее в порядке возрастания

1. Задать явно тип данных в ajax запросе

$.ajax({dataType:'json'})

2. Проверить сервер, действительно ли он отдаёт нужный тип.

Удачи.
Майский Котmay_cat_ghost on Май, 24, 2009 18:53 (UTC)
за замечание спасибо, подправлю :)

а два пункта... увы, не помогают :(
Евгений Ивановeugene_ivanov on Май, 24, 2009 18:56 (UTC)
Re: Reply to your comment...
тогда всё равно думайте, отчего у вас не тот тип данных.

попробуйте на сервере выставить
header('Content-Type: text/plain; charset=utf-8');
Майский Котmay_cat_ghost on Май, 24, 2009 19:00 (UTC)
Re: Reply to your comment...
поставил. Раньше стояло header('Content-Type: text/html; charset=utf-8')
может ли в этом быть проблема?

проблема в том, что ошибка появляется случайным образом. Добиться её повторяемости не получилось :(
Евгений Ивановeugene_ivanov on Май, 24, 2009 19:01 (UTC)
Re[2]: Reply to your comment...
вот и неправильно стояло. сейчас ошибки быть не должно .
Майский Котmay_cat_ghost on Май, 24, 2009 19:02 (UTC)
Re: Re[2]: Reply to your comment...
таки уверены? :) это было бы просто замечательно.

а глубинную логику объяснить можете?
Евгений Ивановeugene_ivanov on Май, 24, 2009 19:04 (UTC)
Re[4]: Reply to your comment...
браузер парсит, считая что это html, xml, но это просто текст.

ошибка возникает, когда в этом ответе идут теги. получается НЕ_Правильный json или ещё чего, и jquery считает это ошибкой.

((-:
Майский Котmay_cat_ghost on Май, 24, 2009 19:06 (UTC)
Re: Re[4]: Reply to your comment...
Спасибо большое :)
(Удалённый комментарий)
Майский Котmay_cat_ghost on Май, 24, 2009 19:12 (UTC)
Re: Re[6]: Reply to your comment...
тебе срочно?
в ближайший месяц-два скорее всего не будет. лишь позже.


в любом случае, можем сконтачиться как-нибудь, например по асе,и иметь друг друга ввиду :)
(Удалённый комментарий)
Майский Котmay_cat_ghost on Май, 24, 2009 19:21 (UTC)
Re: Re[8]: Reply to your comment...
Интересует коммерческое или для души?
(Удалённый комментарий)
Майский Котmay_cat_ghost on Май, 24, 2009 19:26 (UTC)
Re: Re[10]: Reply to your comment...
а с флэшем как?
(Удалённый комментарий)
Майский Котmay_cat_ghost on Май, 24, 2009 19:30 (UTC)
Re: Re[12]: Reply to your comment...
великолепно :)
жди письма на мыло :)