Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.04.2017, 17:32
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

К сожалению, первый вариант в адресной строке выдает:
?tag1=Тег1&tag2=Тег2


а второй
Просит подтверить действие "cat=1&tag=Тег2+Тег3" и ничего не происходит потом.
Ответить с цитированием
  #12 (permalink)  
Старый 28.04.2017, 17:35
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Цитата:
А о том, что сервер должен проверять данные извне, а вы таким образом усложняете проверку пришедших данных, вы не думали?
Скрипт будет встроен в шаблон Wordpress, и всё, что от него (WP) требуется, это обработать запрос. Если ручками прописать в адресной строке то, что я написала вверху, всё работает. Т.е. сам WP понимает такой запрос, а вот как это автоматизировать для конечного пользователя сайта - неизвестно
Ответить с цитированием
  #13 (permalink)  
Старый 28.04.2017, 18:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Да дело то не в запросе, а в проверке данных, то есть я могу отправить и такое cat=1&tag=труля-ля+опа-на, такое будет корректно?
Ответить с цитированием
  #14 (permalink)  
Старый 28.04.2017, 18:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от Sakhet Посмотреть сообщение
К сожалению, первый вариант в адресной строке выдает:
?tag1=Тег1&tag2=Тег2


а второй
Просит подтверить действие "cat=1&tag=Тег2+Тег3" и ничего не происходит потом.
Не может быть.
Первый вариант
cat=1&tag=Тег1+Тег2
Что-то не так скопировали из примера.
Я проверял комплексную работу на макете
HTML
<!DOCTYPE html>
<html>
<head>
    <title>Test Tags</title>
</head>
<body>
<form>
   Тег 1<input type="checkbox" name="tag1" value = "Тег1"><br>
   Тег 2<input type="checkbox" name="tag2" value = "Тег2"><br>
   Тег 3<input type="checkbox" name="tag3" value = "Тег3"><br>
   <input type="submit" value="Отправить">
</form>
<script>
    document.querySelector('form').onsubmit = function (e) {
        e.preventDefault();
        var data = "cat=1&tag=";
        var boxes = document.querySelectorAll('input[type="checkbox"]:checked');
        for (var i = 0; i < boxes.length; i++) {
            data += (i == 0 ? "" : "+") + boxes[i].value;
        }
         var req = new XMLHttpRequest();
        req.open("GET", "test.php/?" + data, true);
        req.addEventListener("load", function () {
            alert("Done: " + req.responseText);
        });
        req.send(null);
    }
</script>
</body>
</html>

test.php
<?php
$tag="NoTag"; 
if(isset($_GET['tag'])) {
 $tag=$_GET['tag'];
 }
echo   $tag ;
?>


И все прекрасно отрабатывает.
По второму варианту: Кто просит подтвердить действие?
Что делает обработчик запроса на сервере?

Последний раз редактировалось Dilettante_Pro, 28.04.2017 в 18:52.
Ответить с цитированием
  #15 (permalink)  
Старый 28.04.2017, 18:59
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Цитата:
Да дело то не в запросе, а в проверке данных, то есть я могу отправить и такое cat=1&tag=труля-ля+опа-на, такое будет корректно?
Да, если есть теги "труля-ля" "опа-на". Поставьте себе Wordpress куда-нибудь и вы сами увидите. Я не обманываю.


Вот ошибка, её показывает браузер.


Дальше я подтверждаю действие и ничего. Вообще ничего.
Тестирую не на сервере, а на своем компьютере в браузере. Но сервер мне тут и не нужен, т.к. javascript исполняется в брауере у клиента, и уже дальше отправляет нужный запрос.

Вот, к примеру я пробовала так сделать:

<form action="http://localhost/wp/" method="get">
<div><select  name='cat' id='category' class='postform' >
	<option value='0'>Выберите категорию</option>
	<option value="1">Категория 1</option>
	<option value="2">Категория 2</option>
</select>
<select name="tag">
	<option value=''>Выберите тэг</option>
	<option value="tag1">Тэг1</option>
	<option value="tag2">Тэг2</option>
	<option value="tag3">тэг3</option>
</select>
<input type="submit" value="Submit">
</div></form>


И такой вариант работает прямо в браузере, но WP ищет только по одной категории и одному тэгу. А вот, чтобы по одной категории и нескольким тегам, нужно разделять их плюсами. И вот сделать так, чтобы были "+" не получается.

Если добавить в мой код еще раз:

<select name="tag">
	<option value=''>Выберите тэг</option>
	<option value="tag1">Тэг1</option>
	<option value="tag2">Тэг2</option>
	<option value="tag3">тэг3</option>
</select>


То форма выдаст в адресную строку: http://localhost/wp/?cat=1&tag=1&tag=2

Такой вариант тоже работает в WP, но ищет как попало. С плюсами же, ищет как надо.
Ответить с цитированием
  #16 (permalink)  
Старый 28.04.2017, 19:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sakhet
Да, если есть теги "труля-ля" "опа-на". Поставьте себе Wordpress куда-нибудь и вы сами увидите. Я не обманываю.
Wordpress, это просто CMS, он также обязан проверять входные данные, что и делает. Если это допускает ввод любого что угодно, тогда нет вопросов.
Ответить с цитированием
  #17 (permalink)  
Старый 28.04.2017, 19:22
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Допускает ввод того, что я написала в первом сообщении. Не о нем речь. Всё, что нужно, это сформировать строчку с запросом в браузере.
Ответить с цитированием
  #18 (permalink)  
Старый 28.04.2017, 19:26
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Я пробовала вот этот вариант. Не работает, а переделать я не знаю как, т.к. не знаю языка.

Находила вот такой вариант, но куда его засунуть никто нигде не пишет.

Последний раз редактировалось Sakhet, 28.04.2017 в 19:29.
Ответить с цитированием
  #19 (permalink)  
Старый 28.04.2017, 19:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sakhet
Находила вот такой вариант, но куда его засунуть никто нигде не пишет.
Это РНР код, на клиента его не вставить. Причем этот код куда разумнее, так как он получает массив данных $_POST['tags'], который и проверить проще, и если уж надо "склеить", то тоже не сложно. Только вот вопрос как производится выборка по тегам и нужно ли "склеивать".
Ответить с цитированием
  #20 (permalink)  
Старый 28.04.2017, 20:49
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Я не понимаю, что значит склеивать. И куда вставлять код я так и не поняла. В шаблон, в плагин, в код WP?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественный выбор. armolov Общие вопросы Javascript 15 16.06.2016 23:25
Выбор всех Select kvaleksandr Элементы интерфейса 12 27.10.2012 20:55
Выбор из таблицы HOmevl Общие вопросы Javascript 4 15.09.2011 01:40
Множественный выбор в анкете Владимир Седов Элементы интерфейса 2 21.05.2010 13:21
Выбор фреймворка маина Библиотеки/Тулкиты/Фреймворки 12 14.03.2009 22:21