#javascript #php #jquery #ajax
#javascript #php #jquery #ajax
Вопрос:
У меня есть форма, проходящая проверку jquery, которая затем отправляется через ajax в PHP-скрипт для обработки внутренних функций. Ajax собирает значения формы с помощью serializeArray() и надеется выполнить работу. Срабатывает скрипт, и данные отправляются (я думаю) на PHP. Я пробовал, вероятно, около 100 комбинаций для получения данных на стороне PHP, но безуспешно. Я убежден, что это должно быть просто, что-то, что я упустил из виду. Ниже приведен код для ajax, а также скриншот инструментов разработчика, показывающий, что отправляется.
Независимо от того, что я пытаюсь на стороне PHP, я либо получаю пустой массив, NULL через $ _POST / $ _GET . Я пробовал json_decode, синтаксический анализ строки, var_dump и т. Д.
var data=$(form).serializeArray();
$.ajax({
cache: false,
type: "POST",
dataType: "JSON",
url: "process/create_site.php",
data: data,
success: function(response) {
console.log(response);
//$(form).html("<div id='message'></div>");
//$('#message').html("<h2>Your request is on the way!</h2>")
// .append("<p>someone</p>")
// .hide()
// .fadeIn(1500, function() {
// $('#message').append("<img id='checkmark' src='images/ok.png' />");
// });
}
});
Комментарии:
1. Попробуйте
var data=$(form).serialize();
вместо этого. serializeArray делает что-то немного другое. Вы можете сравнить заметки здесь: api.jquery.com/serializearray и api.jquery.com/serialize2. Спасибо @ADyson. Что бы у вас было на стороне PHP? Дамп $ _POST а затем обработайте его оттуда, если он работает?
3. Это помогло бы, если бы мы могли видеть ваш текущий PHP. Но да, попробуйте изменить его на serialize(), а затем на стороне PHP начните с
var_dump($_POST);
и посмотрите, что вы получите. Если он содержит данные, то вы можете использовать его по-настоящему.4. Поэтому я изменил его на .serialize(), и PHP содержит только var_dump($ _POST); и его отображение: array(0) { }
5. ОК. Это очень странно. И вы уверены, что
data
в вашем JS содержится то, что вы ожидаете?
Ответ №1:
Мне удалось разобраться в этом после смущающего количества времени. Я хотел бы опубликовать здесь простую причину, чтобы помочь другим.
Весь блок JS был завернут, $(document).ready(function(){
что приводило к удалению значений при отправке в PHP.
Я не могу найти никакой документации или ответа на вопрос с аналогичным сценарием — так что вот оно!