Intereting Posts
Ajax-вызов не работает Проблема с доменом разработки среды MagentoCommerce Зачем нужно использовать JSON в php и AJAX База данных часто реагирует на запросы через PHP Остановка бесконечного цикла на удаленном сервере PHP Regex для получения содержимого между одиночными и двойными кавычками php XMLHttpRequest; Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https, chrome-extension-resource if (0 == '%') echo «WTF, Php, почему вы не можете сравнивать вещи здорово?» Создание виджета настраиваемых категорий Как полностью реализовать сервер-отправленные события для опроса сообщений Сохранение моего верхнего и нижнего колонтитула на всех веб-страницах? Pheanstalk (клиент PHP для beanstalk) – как работают соединения? как сделать ссылку на php image открытой в новом окне Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, заданный массив Как добавить пользовательскую кнопку и ее функциональность в Admin Silverstripe?

Что делать с php после jquery .serialize ()

Хорошо, как-то, когда мне было сложнее понять это, поэтому я хочу сделать ajax вызова с формой и им, используя jquery, чтобы сериализовать его с помощью .serialize (). Данные, отправляемые на php, выглядят примерно так:

key1=value&key2=value2&key3=value3 

И im используя почтовый запрос. Это выглядит довольно просто, но почему-то им очень сложно выяснить, как получить доступ к этим парам ключ / значение, я не могу использовать explode (), и потому это даст мне

 [0] => key1=value1 [1] => key2=value2 [2] => key3=value3 

и я не могу использовать $ _POST ['key1'] или $ _GET ['key1'] в php для доступа к этим значениям. Что мне делать!!! благодаря

И как побочный вопрос, который я замечаю .serilize () заменяет разрывы строк на% 0A и пробелы с +, как я могу декодировать эти значения с помощью php? Еще раз спасибо!

Редактировать:

Привет, код jquery довольно прост:

 var formSubmit = $(this).serialize(); $.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit} 

Если вы отправляете данные формы с помощью функции jQuery Ajax, не должно быть проблем с использованием .serialize() . Сервер должен видеть и urldecode автоматически содержимое POST.

В качестве демонстрации см. Этот код:

HTML

 <form id="category-dynamic" class="dynamic"> <fieldset id="inner-fieldset"> <legend id="new-category"> <label for="category-name">Category Name: </label> <input type="text" name="category-name" value="" /> </legend> <ul id="category-fields"> <li> <label>Field #1:</label><br /> <input type="text" name="fields[]" value="" /> </li> <li> <label>Field #2:</label><br /> <input type="text" name="fields[]" value="" /> </li> </ul> </fieldset> </form> <h3>POST Result</h3> <pre></pre> 

JQuery

 $(document).ready(function(){ $('pre').html($('#category-dynamic').serialize()); $.post("http://jfcoder.com/test/processor.php", $('#category-dynamic').serialize(), function(data){ $('pre').html($('pre').html()+"\n\n"+data); }); }); 

РЕДАКТИРОВАТЬ

И содержимое файла processor.php:

 <?php print_r($_POST); ?> 

EDIT 2

Я считаю, что ваша ошибка заключается в том, что вы отправляете контент таким образом, чтобы данные формы были текстовой строкой вместо url-кодированного контента.

Например, вы можете сделать это:

 var formSubmit = $(this).serialize() + "&formSubmit=true"; $.post('ajax.php', formSubmit); 

И у вас будет тот же эффект, и сервер сможет расширять ваши переменные POST без инцидентов.

ИЗМЕНИТЬ 3

См. Этот пример:

Где код:

 $(document).ready(function(){ var serial = $('#category-dynamic').serialize() + "&formSubmit=true"; $('pre').html(serial); $.post("http://jfcoder.com/test/processor.php", serial, function(data){ $('pre').html($('pre').html()+"\n\n"+data); }); }); 

Обратите внимание на добавление "&formSubmit=true" к последовательным данным. Это выводится на странице PHP:

 POST Result category-name=&fields%5B%5D=&fields%5B%5D=&formSubmit=true Array ( [category-name] => [fields] => Array ( [0] => [1] => ) [formSubmit] => true ) 

EDIT 4

Это использует метод, который вы описываете. Увидеть разницу?

 $(document).ready(function(){ var serial = $('#category-dynamic').serialize(); $('pre').html(serial); $.post("http://jfcoder.com/test/processor.php", {"formSubmit":"true","serial":serial}, function(data){ $('pre').html($('pre').html()+"\n\n"+data); }); }); 

ВЫВОД

 POST Result category-name=&fields%5B%5D=&fields%5B%5D= Array ( [formSubmit] => true [serial] => category-name=&fields%5B%5D=&fields%5B%5D= ) 

Попробуйте использовать json в jQuery и json_decode в php.

Значения существуют в индексе formInfo массива $ _POST,

 print_r( $_POST['formInfo'] ); echo $_POST['formInfo']['key1'];