За последние 24 часа нас посетили 33002 программиста и 1821 робот. Сейчас ищут 872 программиста ...

ajax так и не заработал!

Тема в разделе "JavaScript и AJAX", создана пользователем Panich, 27 ноя 2012.

  1. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Есть вот такая штука:
    Код (Text):
    1. $('#form').submit(function(e){
    2. var codeVal = $('#form input[name=code]').val();
    3. $.ajax({
    4.     type: 'POST',
    5.     url: 'testJSCode.php',
    6.     data: {'code':codeVal},
    7.     success: function(html){
    8.          if (html !== '')
    9.          {
    10.          $("<div id='indicator'></div>").insertAfter('#btn_sendCoock').html(html);
    11.          return false;
    12.          }
    13.     }
    14. });
    При передаче в php обработчик должно выводиться сообщение,что код неверный,но ничего не происходит - js словно проскакивает ajax запрос и переходит дальше...
    В вот если после ajax запроса поставить "return false",то выдаёт ошибку как положено,но код движение не продолжает-естественно!Как быть?В чём проблема?Прошу помощи!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    перед строкой
    if (html !== '')
    вставь alert('отсюда#' + html + '#досюда');
     
  3. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Проскакивает этот alert опять, если не поставить false...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    return false; на строку ниже засунь.
     
  5. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Не!Не помогает...что-то!
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты скажи, что именно показывает в алерте

    и код покажи целиком
    блин, не туда посмотрел.
    вот перед последней строкой
    return false;
    }); поставь
     
  7. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    1. В аллерте показывает: 'отсюда Этот код неверный! досюда'.
    2.
    Если так сделать,то js перестаёт работать вовсе.
    3. А что ещё из кода нужно?
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <meta charset="utf-8">
    5.     <title>Example</title>
    6.     <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    7. </head>
    8. <body>
    9. <form id="form" method="post" onsubmit="return form()">
    10.     <input type="text" name="data" value="">
    11.     <input type="submit" name="submit" value="Send">
    12. </form>
    13. <script type="text/javascript">
    14.     function form() {
    15.         var data=$('#form input[name="data"]');
    16.         if(!data.val()) {
    17.             alert('Заполните поле');
    18.             data.focus();
    19.         } else {
    20.             $.post('testJSCode.php',{data:data.val()},function(html) {
    21.                 html=html || '';
    22.                 if(html) {
    23.                     alert('Success');
    24.                 } else {
    25.                     alert('Undefined');
    26.                 }
    27.             }).error(function() {
    28.                 alert('Error'); 
    29.             });
    30.         }
    31.     return false;
    32.     }
    33. </script>
    34. </body>
    35. </html>
     
  9. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Так,щас попробую...а у меня в чём косяк?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хз. дай код опять какой ща есть
     
  11. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Your, Ваше решение не помогло, всё так же ajax запрос js благополучно проскакивает.
    igordata, вернулся к коду, который был изначально, все предыдущие попытки были тщетны!
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а так
    Код (Text):
    1. $('#form').submit(function(e){
    2.   var codeVal = $('#form input[name=code]').val();
    3.   $.ajax({
    4.     type: 'POST',
    5.     url: 'testJSCode.php',
    6.     data: {
    7.       'code':codeVal
    8.     },
    9.     success: function(html){
    10.       if (html !== '')
    11.       {
    12.         $("<div id='indicator'></div>").insertAfter('#btn_sendCoock').html(html);
    13.         return false;
    14.       }
    15.     }
    16.   });
    17.   return false;
    18. });
     
  13. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    )))Так всё замечательно работает, но вот только данные формы не отправляются в обычный php обработчик тогда - submit не происходит!В этом вся и соль...
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну батенька. отправь.
     
  15. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Стоп!Если вставить в js код строчку return false;,то всё замирает словно и не отправляется. Получается,что js блокирует событие submit. И как же я в этом случае могу отправить данные в php обработчик, если submit не работает?
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так нахрена тебе аякс-то, если ты хочешь отправить форму обычным способом?
     
  17. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Я хочу,что бы выводились ошибки без перезагрузки страницы-валидацию формы делаю.Всю,что мог проверить с помощью js уже сделал,а теперь проверяю на стороне сервера введённые данные и, соответственно, если, что не так, то хочу выводить ошибки!
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык отправь ему содержимое полей
    $.post("test.php", { name: "John", time: "2pm" } );
     
  19. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Ха!Я хочу,что бы при отключённом js форма тоже функционировала.
    Вот html:
    Код (Text):
    1. <form id="formBlog" action="inp_Blog.php" method="post">
    2.     <label for="cod">КОД С КАРТИНКИ:</label>
    3.     <label for="cod"><img src="code/my_codegen.php"></label>
    4.     <input name="code" class="text" type="text"/>
    5.     <input id="btn_sendBlog" type="submit" value="ВОТ ТАКИЕ ДЕЛА" class=""/>
    6. </form>
    Вот js:
    Код (Text):
    1. $('#formBlog').live('submit',function(e){
    2.     var codeVal = $('#formBlog input[name=code]').val();
    3.     $.ajax({
    4.         type: "POST",
    5.         url: "testJSCode.php",
    6.         data: {'code':codeVal},
    7.             success: function(html){
    8.             if (html !== '')
    9.             {
    10.             $("<div id='indicatorB'></div>").insertAfter('#btn_send').html(html);
    11.             document.getElementById('btn_sendBlog').disabled = true;
    12.             }
    13.         }
    14.     });
    15. });
    Именно если после строки }); поставить return false;, то всё работает, но данные уже не отправляются в обычный php обработчик, если убрать, то отправляются и на белом фоне выводится ошибка уже через echo(inp_Blog.php).
    А вот php обработчик, к которому обращается js:
    Код (Text):
    1. $code = trim(($_POST['codeVal']));
    2. if(get_magic_quotes_gpc())
    3. {
    4. $code = stripslashes($code);
    5. }
    6. function generate_code()          
    7. {            
    8. $hours = date("H");  
    9. $minuts = substr(date("H"), 0 , 1);
    10. $mouns = date("m");  
    11. $year_day = date("z");  
    12. $str = $hours . $minuts . $mouns . $year_day;
    13. $str = md5(md5($str));  
    14. $str = strrev($str);              
    15. $str = substr($str, 3, 6);          
    16. $array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);              
    17. srand ((float) microtime()*1000000); shuffle ($array_mix);
    18. return implode("", $array_mix);          
    19. }        
    20. function chec_code($code)            
    21. {          
    22.     $code = trim($code);              
    23.     $array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
    24.     $m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);              
    25.     $result = array_intersect ($array_mix, $m_code);          
    26.     if (strlen(generate_code())!= strlen($code))          
    27.     {
    28.     return FALSE;
    29.     }          
    30.     if (sizeof($result) == sizeof($array_mix))          
    31.     {  
    32.     return TRUE;
    33.     }          
    34.     else        
    35.     {  
    36.     return FALSE;
    37.     }
    38. }            
    39. if (!chec_code($_POST['code']))
    40. {
    41. $html = 'Вы неверно ввели код с картинки!';    
    42. }  
    43. else
    44. {
    45. $html = '';  
    46. }
    47. echo $html;
    Так понятнее?
     
  20. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Ну?Есть варианты решения?
     
  21. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    В функции-обработчике события onsubmit ставишь return false; - чтобы она при любом раскладе возвращала false и форма НЕ отправлялась.
    А вот в функции, которая вызывается в случае success, если html пустой (то есть ошибок не было) - удаляешь с формы обработчик onsubmit и делаешь ей form.submit();