У меня есть веб-страница, где я хочу иметь поле ввода и кнопку поиска. Он будет искать фильмы, соответствующие поля ввода. Поиск и разбор выполняется с помощью php, но я хочу, чтобы результаты были представлены на исходной странице в виде обновленного div. У меня есть текущий html-код:
<script type="text/javascript"> function goSearch(){ $("#Moviesearchdiv").load("MovieSearch.php"); } </script> <form action="JavaScript:goSearch()" method="POST"> <input type="text" name="moviename"> <input type="submit" name="submit" value="Search" > </form> <div id="Moviesearchdiv"></div>
Мой MovieSearch.php выглядит примерно так:
<?php $themovie = $_POST["moviename"]; $myurl = "http://my-url-here.com/search/?q={$themovie}"; $response = file_get_contents($myurl); $result = json_decode($response, true); $result=$result['movies']; $totality = count($result); for ($i = 0; $i <$totality; $i++) { $mymovietitle = $result[$i]['original_title']; $myposter = $result[$i]['poster_original']; echo "<li><img src={$myposter} >{$mymovietitle}</li>"; } ?>
Когда я запускаю его, как … ничего не происходит. Если я вручную изменил первую переменную в MovieSearch.php, чтобы прочитать что-то вроде:
$themovie = "Rocky";
Это правильно загружает все фильмы Rocky в моем div, как ожидалось, без обновления страницы.
Как я могу правильно передать вход «moviename» в php?
Любая помощь и советы очень приветствуются.
Благодаря,
Эрнандо
а) вы не передаете свои данные на страницу (второй аргумент в .load должен быть вашими данными формы), поэтому значение $ themovie равно null.
б) Несмотря на то, что у вас есть метод = «POST» в вашей форме, использование .load предполагает GET, если предоставленные данные не являются объектом. Один из способов предоставления ваших данных формы и в формате объекта (для отправки как POST):
function goSearch(){ $("#Moviesearchdiv").load("MovieSearch.php",$('#yourFormId').serialize()); }
обратите внимание, что вам нужно будет добавить идентификатор в вашу форму и заменить на него #yourFormId.
Когда вы отлаживаете эти вызовы AJAX, сначала вам нужно знать, что страница, с которой вы пытаетесь установить связь, находится там, где ваш AJAX-вызов считает, что это так. Вы знаете, что это происходит потому, что когда вы заполняете $ themovie – вы получаете результаты, вы также можете проверить это в инструментах разработчика в браузере.
Во-вторых, вам нужно убедиться, что вы отправляете данные, которые, по вашему мнению, есть, вы можете проверить это, вернув print_r () или var_dump () из $ _POST или $ _GET в зависимости от того, что вы используете (или думаете, что используете в этом случае).
Эти 2 шага приведут к тому, что вы решите хороший процент проблем, которые вы найдете.
Некоторые мысли:
где вы действительно отправляете содержимое ввода текста в ваш php-скрипт?
попробуйте использовать trim()
для результата, полученного из $_POST
перед добавлением его к URL-адресу.
сделайте var_dump()
для переменной $_POST
чтобы увидеть, что приходит на ваш сервер – вы можете быть удивлены.