ФорумПрограммированиеJavaScript → Вопрос работа с ajax через jquery

Вопрос работа с ajax через jquery

  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 сентября 2010 г. 6:20

    Здравствуйте, изучаю jquery возникла такая проблема


    $(function(){
    $("#fr_sub").click(function(){
    var errorList = [];
    // Хэш с текстом ошибок (ключ - ID ошибки)
    var errorText = {
    1 : "Не заполнено поле 'Имя пользователя!",
    2 : "Поле описание должно содержать не менее 5 символов!",
    3 : "Этот пользователь уже существует в вашей адресной книге!"
    }
    var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
    if($("#login_fr").val() == "") {
    errorList.push(1);}
    else {
    $.ajax({
    type: 'POST',
    data: 'login_fr='+$("#login_fr").val(),
    url: 'usersreg/js/check_frname.php',
    success: function(response) {
    //==проблема вот в этом месте
    if(response == "1") {errorList.push(3);}
    //=======
    }
    });
    }
    if($(&quot;#op_fr&quot;).val().length <= 5) {
    errorList.push(2);}
    for (i = 0; i < errorList.length; i++) {
    errorMsg += errorText[errorList] + &quot;\n&quot;;
    }
    if (!errorList.length)
    {return true;}
    else
    {alert(errorMsg);}
    });
    });



    Мне необходимо, чтоб после проверки добавлялся 3 элемент в массив errorList, как ни пробывал не получаеться, возможно проблема в том, что функция не видит его. Подскажите, пожалуйсто, как добавить этот 3 эемент в массив ошибок?
  • Chiffa

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 6:58, спустя 37 минут 44 секунды

    всё функция видит:)
    проблема скорее всего в самом респонсе. у вас проверка
    if(response == &quot;1&quot;)
    вообще срабатывает? {+++217+++} на всяк случай, между
    die(1);
    и
    die(&quot;1&quot;);
    есть разница
  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 сентября 2010 г. 7:24, спустя 26 минут 20 секунд

    Chiffa, Да проверка работает , сам код работает не заносит в массив , причина скорее всего в том что errorList выходит за область видимости переменных в данной функции, тоесть функция не понимает, что есть этот массив. Но это лично моё мнение , так как я в js не особо разбираюсь, но проверка срабатывает , я специально проверял через алерт.
  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 7:27, спустя 3 минуты 8 секунд

    а что консоль пишет? у тебя там в одном месте точки с запятой нет… и еще, ты хочешь, чтоб добавлялся третий элемент, а первые два добавляются?))
    Высокоуровневое абстрактное говно
  • Chiffa

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 7:32, спустя 4 минуты 32 секунды

    проверяю ваш код у себя - всё отлично добавляется. так что errorList вполне себе видим из функции…
    сразу после
    errorList.push(3);
    выведите errorList.length
    если выведет не undefind значит с видимостью массива всё в стопудовом порядке, и проблемма где-то дальше
    {+++68+++}

    а что консоль пишет?

    да, действительно:)
  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 сентября 2010 г. 11:07, спустя 3 часа 34 минуты 53 секунды

    Chiffa, , первые да щас проверю на errorList.length блин.

    Stasovsky, покажи плз где нет точки с запятой, может пропустил я где я сравню со своим кодом =)
  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 сентября 2010 г. 11:17, спустя 9 минут 43 секунды

    Chiffa, попробовал видимость норм, выводит что добавлен 1 элемент, щас попробую вот так :

    errorList.push(3);
    alert(errorList.length)

    да блин элемент заносит в массив. Эх, надо искать ошибку в коде ниже =((((
  • Chiffa

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 11:27, спустя 10 минут 27 секунд

    onzone, не волнуйсь, от пропущеной точки-с-запятой таких приколов не бывает
  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 сентября 2010 г. 11:36, спустя 8 минут 47 секунд

    Chiffa, тут в другом дело вообщем привожу пример как всегда =):

    $(function(){
    $(&quot;#fr_sub&quot;).click(function(){
    var errorList = [];
    // Хэш с текстом ошибок (ключ - ID ошибки)
    var errorText = {
    1 : &quot;Не заполнено поле &#39;Имя пользователя!&quot;,
    2 : &quot;Поле описание должно содержать не менее 5 символов!&quot;,
    3 : &quot;Этот пользователь уже существует в вашей адресной книге!&quot;
    }
    var errorMsg = &quot;При заполнении формы допущены следующие ошибки:\n\n&quot;;
    if($(&quot;#login_fr&quot;).val() == &quot;&quot;) {
    errorList.push(1);}
    else {
    $.ajax({
    type: &#39;POST&#39;,
    data: &#39;login_fr=&#39;+$(&quot;#login_fr&quot;).val(),
    url: &#39;usersreg/js/check_frname.php&#39;,
    success: function(response) {
    if(response == &quot;1&quot;) {errorList.push(3); alert(errorList.length);} //===тут при выполнении мы видим что добавлен 1 элемент
    }
    });
    alert(errorList.length); //==идём дальше, видим ага, тут уже 0 элементов
    }
    if($(&quot;#op_fr&quot;).val().length <= 5) {errorList.push(2);}
    for (i = 0; i < errorList.length; i++) {
    errorMsg += errorText[errorList] + &quot;\n&quot;;
    }
    if (!errorList.length)
    {return true;}
    else
    {alert(errorMsg);}
    });
    });


    \\============если сделать так то будет работать! (есть ошибки писал наскоро!)

    $(function(){
    $(&quot;#fr_sub&quot;).click(function(){
    var errorList = [];
    // Хэш с текстом ошибок (ключ - ID ошибки)
    var errorText = {
    1 : &quot;Не заполнено поле &#39;Имя пользователя!&quot;,
    2 : &quot;Поле описание должно содержать не менее 5 символов!&quot;,
    3 : &quot;Этот пользователь уже существует в вашей адресной книге!&quot;
    }
    var errorMsg = &quot;При заполнении формы допущены следующие ошибки:\n\n&quot;;
    if($(&quot;#login_fr&quot;).val() == &quot;&quot;) {
    errorList.push(1);}
    else {
    $.ajax({
    type: &#39;POST&#39;,
    data: &#39;login_fr=&#39;+$(&quot;#login_fr&quot;).val(),
    url: &#39;usersreg/js/check_frname.php&#39;,
    success: function(response) {
    //===Все дейсвия выпоняются внутри функции , что доказывает , что эта функция локальная, тоесть как я понимаю надо вернуть значение errorList.push(3);
    if(response == &quot;1&quot;) {errorList.push(3);

    if($(&quot;#op_fr&quot;).val().length <= 5) {errorList.push(2);}
    for (i = 0; i < errorList.length; i++) {
    errorMsg += errorText[errorList] + &quot;\n&quot;;
    }
    if (!errorList.length)
    {return true;}
    else
    {alert(errorMsg);}}
    }
    });
    }

    });
    });


  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 4:21, спустя 16 часов 45 минут 40 секунд

    есть ошибки писал наскоро!

    да тут весь форум скорой писанины поэтому никто и не читает…
  • onzone

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 сентября 2010 г. 9:12, спустя 4 часа 50 минут 59 секунд

    CTAPbIu_MABP, ))))логично). Вчера целый день продолбался, но наконец всё поучилось=)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!