Не совсем понял,как в моём случае это можно использовать? Попробовал в php объявить $html='',если удовлетворило условиям,а в js проверить if(html=''),то не выводить,но не вышло нечего...может уточните вариант!? И тут ещё: Код (Text): $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ как ниже мне можно получить значение $html,которое я из php получаю?
Код (Text): $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ /* здесь вам нужно указать в какой элемент выводить этот html код, а так же сделать .removeAttr() для кнопки. если же в html пусто, то для дива - .css() .attr() и оные, ставить свойство - display:none;*/ }
если же в html пусто, то для дива - .css() .attr() и оные, ставить свойство - display:none;*/ 1.)Да это понятно...вот как составить условие?Так: Код (Text): if (html='') { <div>........ } Или: Код (Text): if (html.html='') { <div>........ } Я не очень,как Вы заметили,в js! 2.)Для кнопки так: Код (Text): $('.btn_modal').removeAttr() Или: Код (Text): $('.btn_modal').click(function(){return false;}) И ещё,что бы было понятно-вот как выделывается скрипт: Код (Text): $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ alert (html); Выводит как и запланировано:либо текст сообщения об ошибке,либо пустоту! Тут: Код (Text): $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ if (html == '') { alert ('Я уже задолбался морочиться с этой проверкой!'); } Вообще ничего не выводит!В чём может быть причина? ПОМОГИТЕ завалить этого зверя-сам не справлюсь!!!
ну это же всё просто, Вам просто нужно воспользоваться гуглом и посмотреть примеры работы) для removeAttr() нужно указывать атрибут который хотите удалить (disabled) для активации кнопки. а вместо: Код (Text): if (html='') { <div>........ } Код (Text): if (html!='') { $(divid).html(html); } else { $(divid).attr('style','display:none;'); } както так.
Я там дописал выше-немного не получается,что Вы советовали! Вот что реализовал,опираясь на Ваши корректировки: Код (Text): $('#name_red').blur(function () { var nameVal = $('#name_red').val(); if(nameVal =='') { $(this).val($(this).attr('defaultValue')); } else { $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ if (html != '') { $("<div id='indicatorName'></div>").insertAfter('#name_red').html(html); $('.btn_modal').click(function(e){ e.preventDefault(); }); } else { $('div#indicatorName').attr('style','display:none;'); $('input.btn_modal').click(function(){ return false; }); } } }); } }); $('#name_red').focus(function(){ $('#indicatorName').fadeOut(1000); if($(this).val() == $(this).attr('defaultValue')) { $(this).val(''); } }); Что получается: 1.Сообщение об ошибке появляется как и задумано(если неправильно)! 2.Если правильно,то появляется пустая рамка-то есть не помогли удаления стилей! 3.Кнопка так и не разблокируется-куда прилепить removeAttr я так и не понял после прочтения-точнее понял,но как применить в моём случае не знаю!
Код (Text): if (html != '') { $('#div_id_to_show_info').html(html); $('#button_id_to_show').removeAttr("disabled"); } else { $('#div_id_to_show_info').attr('style','display:none;'); } Полагаю что у Вас div_id_to_show_info это - indicatorName.
Всё Вы правильно понимаете! Только вот проблема в том,что if (html !=''),когда вызываешь alert,то выводит пустоту,а если выводишь как Вы предложили,то не срабатывает это условия-вот причину не могу понять............................. Это злополучное alse отказывается выполняться,а значит,что html не возвращает пустоту?Но alert же ничего не выводит-как так может быть?Может проблема в php-можете взглянуть? Выложу полностью,что сейчас есть: php: Код (Text): <?php //для js проверки ////////////////////////////////ИЗМЕНЕНИЕ ИМЕНИ //////////////////////////// session_start(); include ("bd.php"); $id = $_SESSION['id']; if (!preg_match("|^[\d]+$|", $id)) { $html = '<div>Неверный формат запроса! Проверьте URL!</div>'; } if (isset($_POST['name'])) { $name = mysql_real_escape_string(trim($_POST['name'])); $name = iconv('UTF-8', 'Windows-1251', $name); $name = htmlspecialchars($name); if(get_magic_quotes_gpc()) { $name = stripslashes($name); } $html =''; if(!preg_match('/^[А-Яа-яЁё]{2,20}$/', $name)) { $html = '<div>Используйте только от 2-х до 20-ти<br> символов русского алфавита!</div>'; } else { $sql18 = "UPDATE users SET name='$name' WHERE id='$id'"; $result18 = mysql_query($sql18, $db)or die("Ошибка в запросе: " . mysql_error()); if (!$result18) { $html = '<div>Ошибка обновления имени-попробуйте ещё раз!</div>'; } } echo($html); } ?> js: Код (Text): $('#name_red').blur(function () { var $Name = $(this); var nameVal = $('#name_red').val(); if(nameVal =='') { $(this).val($(this).attr('defaultValue')); } else { $.ajax({ type: "POST", url: "php.php", data: "name="+nameVal, success: function(html){ if (html != '') { //Вот тут в теории принимает html значение из php. //Я пробовал его выводить через alert-если не удовлетворяет условию,то выводится <div></div>,а если удовлетворяет,то пустота в алерте //вроде как должно всё работать-да вот только не работает если выполнять написанные мной условия! //Помогите понять в чём причина?! $("<div id='indicatorName'></div>").insertAfter('#name_red').html(html); $('.btn_modal').click(function(e){ e.preventDefault(); }); } else { //вот это условие вообще не выполняется!Не убирается div и кнопка не разблокируется $Name.next().attr('style','display:none;'); $('.btn_modal').removeAttr('disabled'); } } }); } }); //убирает div только вот этот скрипт $('#name_red').focus(function(){ $('#indicatorName').fadeOut(1000); if($(this).val() == $(this).attr('defaultValue')) { $(this).val(''); } }); Обращайтесь.Читайте.Но самое главное помогайте.....!!! Отчаялся уже...гляньте кто-нить!А?
>Вот тут в теории принимает html значение из php. дело в том, что в скрипте если всё правильно, то отправляется пустая переменная. нужно дописать Код (Text): if (!$result18) { $html = '<div>Ошибка обновления имени-попробуйте ещё раз!</div>'; } //***************************** else{ $html = 'ok'; } ещё момент $id = $_SESSION['id']; нужно наоборот, когда в сессию записываешь, то проверяешь, а когда выводишь уже очевидно не нужно проверять
А если пойти от противного и избавиться от загрузки в базу данных и оставить: Код (Text): session_start(); include ("bd.php"); $id = $_SESSION['id']; if (!preg_match("|^[\d]+$|", $id)) { $html = '<div>Неверный формат запроса! Проверьте URL!</div>'; } if (isset($_POST['name'])) { $name = mysql_real_escape_string(trim($_POST['name'])); $name = iconv('UTF-8', 'Windows-1251', $name); $name = htmlspecialchars($name); if(get_magic_quotes_gpc()) { $name = stripslashes($name); } if(!preg_match('/^[А-Яа-яЁё]{2,20}$/', $name)) { $html = '<div>Используйте только от 2-х до 20-ти<br> символов русского алфавита!</div>'; } else { $html == ''; } echo($html); } ?> Я хочу добиться,что бы кнопка начинала работать,а рамка из под сообщения об ошибке исчезала,но ничего не выходит...как тут прикажете поступить?
попробуйте echo без ковычек. Код (Text): <? session_start(); include ("bd.php"); if (!preg_match("|^[\d]+$|", $_SESSION['id'])) { $html = '<div>Неверный формат запроса! Проверьте URL!</div>'; } else { if (isset($_POST['name'])) { $name = mysql_real_escape_string(trim($_POST['name'])); $name = iconv('UTF-8', 'Windows-1251', $name); $name = htmlspecialchars($name); if(get_magic_quotes_gpc()) { $name = stripslashes($name); } if(!preg_match('/^[А-Яа-яЁё]{2,20}$/', $name)) { $html = '<div>Используйте только от 2-х до 20-ти<br> символов русского алфавита!</div>'; } else { } echo $html; } } ?>
Это как написать? echo = ;???? А кто сможет подсказать как отключить кнопку,а потом включить через if,else...попробовал,что есть в гугле,но не работает...(((
Всем спасибо,всё сделал! Два последних вопроса: 1.На кнопку в html поставил disabled-это чревато чем-то? 2.Если форма регистрации высвечивается только при работающем яваскрипт в модальном окне,имеет ли смысл проверять её на стороне сервера...ведь пользователь отключив яваскрипт все-равно на неё не попадет?
Ну,что тут проверять-я,конечно,пробовал яву отключать и попасть в эту форму никак не мог...вопрос задал,что бы профи может сталкивались с неординарными ситуациями;особенно по первому вопросу...может Вы сталкивались!
Запрос с данными формы можно отправить в твой PHP-обработчик вообще не из браузера. И пофигу ему будет на JavaScript. Например, на том же PHP (curl, file_get_contents + stream_context_create) можно генерировать запросы к серверу и отправлять любые данные, какие вздумается. Можно во всяких firebug-ах, на сколько знаю, любые запросы придумывать.
Круто!Думаю защититься на 100% вообще невозможно! Тогда вот вопросик ещё: Сначала я сделал два файла для проверки формы на php.На один отправлял запрос аякс и на основании полученных результатов выводил сообщения об ошибках,но ели пользователь вводил данные правильно-проверка через аякс прошла положительно! Соответственно данные отправлялись на дублирующий php файл(который запланирован был для проверки, если яваскрипт отключён).Только вот проблема-выводит этот дублирующий файл сообщения об ошибках!!!(через echo). Попробовал всё объединить в один:если нет ошибок,то опять сообщение об ошибке на белом фоне через echo... Как тут реализовать?
Почитал.Интересно! Большое спасибо за помощь! Теперь приступил к валидации на js загружаемых изображений! Гуглил и там готовых решений нет,а только вопросы на форумах без конкретных ответов,а отдельные товарищи пишут,что реализовать через js не возможно... Если так,то вопрос: как с помощью ajax передать переменную в php файл,загружаемую в базу?Нужно,что бы php получил значение $_FILES["filename"]["name"]?А дальше уже там проверить все дела? Ну,например так: Код (Text): <input id="fupload_red" type="file" name="fupload" value=""><br> И: Код (Text): $('#btn_red').click(function () { var fovoVal = $('#fupload_red').val(); if (fovoVal !== '') { $.ajax({ type: "POST", url: "update_userJS.php", data: {'fupload':fovoVal}, success: function(html){ if (html !== '') { $("<div id='indicatorAva'></div>").insertAfter('#fupload_red').html(html); document.getElementById('btn_red').disabled = true; } else { $('#indicatorAva').fadeOut(1000); document.getElementById('btn_red').disabled = false; } } }); } }); php не принимает $_FILES["filename"]["name"]!?Почему!?
Щас я Вас научу)))))): Соответственно js: Код (Text): $('#fupload_red').blur(function () { var fovoVal = $('#fupload_red').val(); if (fovoVal !== '') { var imgTest = /^[A-Za-zА-Яа-я0-9-_]+[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/; if(!fovoVal.match(imgTest)) { $("<div id='indicatorAva'>Аватар должен быть в формате<br><strong>JPG,GIF или PNG</strong></div>").insertAfter('#fupload_red'); document.getElementById('btn_red').disabled = true; } else { var avaVal = $('input[name=userid]').val(); $.ajax({ type: "POST", url: "update_userJS.php", data: {'userid':avaVal}, success: function(html){ if (html !== '') { $("<div id='indicatorAva'></div>").insertAfter('#fupload_red').html(html); document.getElementById('btn_red').disabled = true; } else { $('#indicatorAva').fadeOut(1000); document.getElementById('btn_red').disabled = false; } } }); } } }); Тут php: Код (Text): include ("bd_fotouser.php"); if (isset($_POST['userid'])) { $userid = mysql_real_escape_string(trim($_POST['userid'])); $userid = htmlspecialchars($userid); if(get_magic_quotes_gpc()) { $userid = stripslashes($userid); } $sql24 = "SELECT COUNT(*) FROM `fotouser` WHERE `id_user_ava` = '$userid'"; $result24 = mysql_query($sql24, $db)or die("Ошибка в запросе: " . mysql_error()); if (!$result24) { echo "ошибка - ".mysql_error()."<br>"; echo $sql24; exit(); } else { $row = mysql_fetch_assoc($result24); $uploadedfiles = $row[0]; if ($uploadedfiles >= 3) { $html = "<div>Загружать более трёх фотограыий нельзя!</div>"; } else { $foto_size = $_FILES['fupload']['size']; if ($foto_size > 5*1024*1000) { die ('Размер картинки превысил лимит в 5 Мб. <a href="'.$PHP_SELF.'" target="_self">Загрузить снова</a>'); } else { $html = ''; } } } echo $html; } И наконец форма отправки: Код (Text): $avaForma.='<br><strong>Не больше трёх:</strong> <input id="fupload_red" type="file" name="fupload" value=""><br> <input type="hidden" name="userid" value="'.$id.'"> print $avaForma; Вот только остался вопрос где нужна Ваша помощь: как мне передать $_FILES['fupload']['size'],что бы сделать проверку вот тут - if ($foto_size > 5*1024*1000) подскажите пожалуйста...или просто как проверить вес картинки до загрузки на сервер на стороне клиента?