ПОСЛЕДНИЙ РЕДАКТ. Оказывается, что в formprocessing.php isset ($ _ POST ['submit1']) FALSE (где 'submit1' теперь является именем кнопки отправки, изначально у нее не было имени). Как видно из приведенного ниже кода, я не тестировал это первоначально.
Это объясняет многое. Но оставшийся вопрос заключается в том, почему isset ($ _ POST ['submit1']) FALSE.
ПРИМЕЧАНИЕ. Этот вопрос был отредактирован, чтобы отразить более свежие идеи.
Будучи новичком PHP, я экспериментирую с публикацией форм на сервере, и он не работает. Во всяком случае, я пропускаю что-то простое, но я просто этого не вижу.
У меня есть два файла: «form.php» и «formprocessing.php», оба находятся в одной папке. Я включил полный код ниже, но сначала некоторые объяснения. Файл 'form.php' содержит форму, в том числе метод post. Файл «formprocessing.php» – это, так сказать, назначение метода «post», то есть «action = formprocessing.php».
Идея состоит в том, что обработка формы должна происходить без загрузки «formprocessing.php» или перезагрузки «form.php» (отсюда «event.preventDefault ();» в form.php). Я знаю, что я мог бы также публиковать на «form.php», но на данный момент я хочу пойти с двумя отдельными файлами.
Я принял код «form.php» с сайта jQuery почти буквально ( http://api.jquery.com/jQuery.post/ , последний пример). Я изменил имя файла в атрибуте действия на «formprocessing.php» и добавил необходимую команду JSON.stringify (см. Ниже).
Остальная часть кода в форме formprocessing.php просто извлекает значение поля ввода (в поле есть только одно поле) и возвращает его в форму form.php в виде JSON-объекта ( который затем стягивается в form.php). По крайней мере, это идея!
Сценарий, сгенерированный в 'formprocessing.php.' – после ввода, скажем, «xxx» в поле ввода – выглядит следующим образом:
<script> {"content":"xxx"} </script>
Теперь, на мой взгляд, этот сценарий СМОТРЕТЬ правильно – но так ли? Это первое, что я хотел бы знать наверняка сейчас.
EDIT: теперь я удалил все теги HTML в formprocessing.php. Это также означает, что сгенерированный скрипт сводится к {"content": "xxx"}, то есть только к JSON-объекту. Однако это не изменяет результат.
Потому что что-то пойдет не так позже. То есть, в конце 'form.php', я прикрепляю содержимое данных, возвращаемых из 'formprocessing.php', к элементу div. Но на самом деле строка, прикрепленная к div, оказывается «{« length »: 0,« prevObject »: {" 0 ": {}," 1 ": {}," 2 ": {}," 3 " : {}, "4": {}, "5": {}, "6": {}, "7": {}, "8": {}, "длина": 9}, "селектор": "#content"} "- то есть, указывая объект длиной 0. Вместо фактических данных, предположительно возвращенных из 'formprocessing.php' (которые, как я сказал, также равны исходному входу в поле формы).
Вот код 'form.php':
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.post demo</title> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> </head> <body> <form action="formprocessing.php" id="searchForm"> <input type="text" name="s" placeholder="Search..." /> <input type="submit" value="Search" /> </form> <!-- the result of the search will be rendered inside this div --> <div id="result"></div> <script> /* attach a submit handler to the form */ $("#searchForm").submit(function(event) { /* stop form from submitting normally */ event.preventDefault(); /* get some values from elements on the page: */ var $form = $( this ), term = $form.find( 'input[name="s"]' ).val(), url = $form.attr( 'action' ); /* Send the data using post */ var posting = $.post( url, { s: term } ); /* Put the results in a div */ posting.done(function( data ) { var content = $( data ).find( '#content' ); contentstring = JSON.stringify(content); $( "#result" ).empty().append( contentstring ); }); }); </script> </body> </html>
И вот код 'formprocessing.php':
<!DOCTYPE html> <html lang="nl"> <head> <meta charset="UTF-8" /> <title>Contact</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script> </head> <body> <script> <?php echo "alert('Hello!');"; $invoer = $_POST['s']; echo ( json_encode(array("content" => $invoer)) ); ?> </script> </body> </html>
Любая помощь очень ценится.