Проверка с использованием AJAX и jQuery без отправки данных в другой файл - PullRequest
0 голосов
/ 26 марта 2019

моя проблема - пока - не в конкретном коде, а в базовом понимании - я думаю.

Я хочу создать формуляр и использовать данные без обновления страницы, так что я попаду в AJAX.

Теперь мне всегда нужно создавать отдельный файл, который работает с данными, которые отправляет AJAX? Разве я не могу просто "взять" данные и работать с ними на одной странице?

Мне кажется, я неправильно понял некоторые основные понятия.

Я думал о чем-то вроде этого:

<form id="load_filters_form">
  ..
</form>

<?php
  var_dump($_GET); // values from <form>
?>

<!-- AJAX, jQuery -->
<script>
  $("#load_filters_form").submit(function(event){

    event.preventDefault();

    $.ajax({

      type: 'get',
      data: $(this).serialize()
      success: function() {
        $("#load_filters_form")[0].reset(); 
      }

    });

  });
</script>

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Теперь мне всегда нужно создавать отдельный файл, который работает с данными, которые отправляет AJAX?

Да и нет. Вы можете отказаться от конкретного файла, который ваш ajax извлекает, но вам нужны какие-то отношения Routing и Controller, так как большинство фреймворков его создают.

Теоретически вы можете создать запрос к себе (на той же странице), но это плохая логика. Вы будете смешивать бэкэнд-логику с внешним интерфейсом, и вы очень быстро запутаетесь. Вам действительно нужно разделить все три элемента,

  • PHP берет данные и обрабатывает их
  • JavaScript берет данные и отображает их
  • Ваш HTML должен быть без кода; Просто довольно доработанный продукт.

Лучший шаблон проектирования - разделять эти файлы в надлежащей среде.

Разве я не могу просто "взять" данные и работать с ними на одной странице?

Не совсем, по крайней мере, не всегда. Вы также должны помнить, что это потенциальная проблема при попытке передать два отдельных содержимого из одного и того же маршрута / файла:

if ajax 
// do something
else
// do the other thing

Ajax не хочет полностью отображаемые HTML-файлы, это занимает слишком много времени; Лучше всего обслуживать объекты / массивы JSON, которые будут отображаться в вашем интерфейсе через JavaScript; который также использовался для выполнения запроса - в браузере пользователя без задержки, вызванной его сетью или вашим сервером.

Не существует точного способа узнать, какой запрос является тем, что никакие данные от клиента не заслуживают доверия, включая заголовки HTTP; их легко подделать и они могут привести к безопасности / нежелательным результатам.

Таким образом, лучшее решение - это иметь чужой файл, к которому вы бы обращались, а не делать это от себя.

0 голосов
/ 26 марта 2019

То, что вы предлагаете, безусловно возможно, именно так работает AJAX.Вы делаете запрос AJAX из кода JavaScript, отправляя любые данные, которые понадобятся коду на стороне сервера, и обрабатываете ответ сервера в своем коде JavaScript.

Проблема с тем, что вы предлагаете, заключается в том, что вы 'сделать его излишне сложным для себя.Подумайте, что ваш код в вопросе вернет к коду JavaScript в ответе AJAX.Он возвращает всю HTML-страницу , большая часть которой уже находится на клиенте.

Зачем повторно передавать все эти данные, которые уже есть у клиента?Зачем на клиенте код для анализа данных, которые он ищет, из всей ненужной разметки вокруг этих данных?

Сохраняйте свои операции простыми.Если вам нужна операция на стороне сервера, которая получает данные, выполняет логику и возвращает результат, то создайте операцию, которая делает именно это.Вызовите эту операцию в AJAX и используйте полученные данные .

Теперь, возможно, этот ответ представляет собой структурированные данные JSON, которые ваш клиентский код может читать и обновлять пользовательский интерфейс соответственно.Или, возможно, этот ответ является необработанным HTML (не вся страница , а, возможно, один <div> или контейнер любого типа, представляющий обновленную версию раздела страницы), который может использовать ваш клиентский коднапрямую подключайтесь к интерфейсу пользователя.

Взаимодействие AJAX с сервером, как правило, должно быть легким.Если вы намеренно перезагружаете всю страницу в AJAX-операции, тогда зачем использовать AJAX?Смысл в том, чтобы отправлять на сервер только те данные, которые ему нужны, и получать обратно с сервера только те данные, которые вам нужны.Например, если все, что вам нужно, это обновить список записей, отображаемых на странице, то вам не нужна вся страница или даже таблица записей HTML, вам просто нужны записи.JSON полезен именно для этого, возвращая структурированные данные и только структурированные данные клиенту.Затем клиентский код может отобразить эти данные в структуре страницы.

...