Помогите вывести масив
Приходит: {"title":"что то","content":"контент","menu":"меню"} Надо вывести через цикл: $(data['ключ']).html(data['значение..']); |
И что революционного в стандартном для jQ в вашем решении? Проверка пустых полей? Так зачем она да еще с placeholder, если есть атрибут required?
Массив как foreach в jQ, это метод each. |
Цитата:
Страница с динамическим контентом..При смене контента не меняется title... Я просто хочу с сервера отправлять массив данных.. Например такой : {"#content":"сам контент","#title":"титл страницы" и т.д...} Он приходит и чтоб не подменять так: $(#content).html(data['content']); $(#title).html(data['title']); Вывести все замены на странице циклом... А про революцию никто и не говорит... Просто ненашел для меня понятный пример работы с циклами... Напомню что js только начал изучать...знаю unity js но он очень отличается..знаю C# Пробовал выводить как в них но у меня ничего не получается..Поэтому прошу помоч..:help: |
Вопрос "вывести через цикл", и если each, это "я не понял", значит не понял.
|
Спасибо !!! Можно закрыть тему а я пошел копать в сторону each
|
Может кому пригодится.
Замена контента титла и что угодно... $('#content').on('submit','#ajaxform',function(){ var form = $(this); var error = false; form.find('input, textarea').each( function(){ if ($(this).val() == '') { alert('Заполните поле "'+$(this).attr('placeholder')+'"!'); error = true; } }); if(!error){ var data = form.serialize(); $.ajax({ type: 'POST', url: 'ad.php', dataType: 'json', data: data, beforeSend: function(data){ form.find('input[type="submit"]').attr('disabled', 'disabled'); }, success: function(data){ if(data['error']){ alert(data['error']); }else{ $.each(data, function(key, val){ $(key).html(val); }); } }, error: function (xhr, ajaxOptions, thrownError){ alert(xhr.status); alert(thrownError); }, complete: function(data){ form.find('input[type="submit"]').prop('disabled', false); } }); } return false; }); Передаем массив.. $json['#content'] = 'OK Content !!!'; $json['#titl'] = 'title ok'; На главной странице.. <title id="title"></title> <body> <div id="content"></div> </body> |
Еще вопросик..
Вот форма <form method="post" name="cr-us" action="?mod=users&opt=create-user" id="ajaxform"> <br /> <input type="text" size="32" maxlength="36" name="name" placeholder="Ваше имя" val=""><br /> <input type="text" size="32" maxlength="36" name="email" placeholder="Ваш email" val=""><br /> <input type="text" size="32" maxlength="36" name="subject" placeholder="Тема" val=""> <br /> <textarea cols="25" rows="10" name="message" placeholder="Сообщение.." val=""></textarea> <br /> <input type="submit" name="cr-user" id="cr-user" value="GO GO GO"/> </form> Выше упамянутым скриптом отправляется пост..Все приходит кроме то что в субмите..На стороне сервера мне надо както индифицировать приходящие данные..чтоб знать какой модуль будет обробатывать..Например без js в посте приходит name="cr-user" из submita и в php запускается модуль с именем cr-user..Через js не приходит и как быть? |
Дело в том, что jQ не помещает кнопки отправки формы, а также поля типа file в результат методов serialize(), serializeArray().
Можно добавить самостоятельно кнопку: data: $(this).serialize()+'&cr-user='+что-то вразумительное //ибо GO GO GO, это не лучшее для инициализации Можно и скрытым полем передавать признак той или иной формы. А если выбросить все эти name="email", и работать по случайному ключу, который формирует и хранит сервер, то этот ключ и будет служить идентификатором и полей, и источника (формы). |
Цитата:
Что за ключь я знаю а вот как им пользоваться нет.. |
name, email, subject, ... это и есть ключи массива, под которыми значения соответствующих полей формы и будут переданы на север. Говоря о ключе, я имел ввиду не использовать таких явных имен у полей формы как name, email, pass и т.д.
Как бы работал бот изучая вашу страницу - уж точно бы нашел эти имена и понял, что они собой представляют. А есть еще и autocomplete, о котором вы может даже и не подозреваете, а это "удобство" может обернуться и сложностями. Сервер не может принять одновременно две формы. Если клиент имеет на страницах не более одной формы, то все упрощается. При каждом запросе формы и ее выводе пользователю сервер генерирует случайный хеш, который хранит или в сессии (сессионный ключ), или в базе (время работы ключа не зависит от жизни сессии), который является ключом для имени определяющего источник запроса. Источник запроса в свою очередь определяет что за форма пришла, как должны быть обработаны ее поля, с какой таблицей базы данных они связаны. Например, имена ваших полей выглядели бы так: <form method="post" name="cr-us" action="?mod=users&opt=create-user" id="ajaxform"> <br /> <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[0]" placeholder="Ваше имя" val=""><br /> <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[1]" placeholder="Ваш email" val=""><br /> <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[2]" placeholder="Тема" val=""> <br /> <textarea cols="25" rows="10" name="612a15ca20bb91356d9433c9195d4d5f[3]" placeholder="Сообщение.." val=""></textarea> <br /> <input type="submit" value="GO GO GO"/> </form> Если такое именование преследует скрыть истинное назначение полей формы, то тексты типа "Ваш email" добавляются посредством сценария, отказываются от разных новых типов полей ну и т.д. Хотя бот боту рознь. Но в данном случае такую форму можно принять только в течении жизни сессии (при хранении ключа в сессии), после чего такой формы для сервера просто не будет существовать. При успешном приеме данных текущий ключ также удаляется. Сервер получая форму, по ключу узнает имя источника запроса, соответственно обрабатывая данные. Соответствие индексов полей формы именам полей SQL-таблицы хранится на сервере под именем источника запроса, как их ключом. |
Часовой пояс GMT +3, время: 11:55. |