Передать переменную ввода текста в PHP для загрузки Div

У меня есть веб-страница, где я хочу иметь поле ввода и кнопку поиска. Он будет искать фильмы, соответствующие поля ввода. Поиск и разбор выполняется с помощью 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 чтобы увидеть, что приходит на ваш сервер – вы можете быть удивлены.