将文本输入变量传递给PHP以进行Div加载

时间:2014-05-01 16:58:21

标签: javascript php jquery html

我有一个网页,我想要一个输入框和一个搜索按钮。它将搜索匹配输入框的电影。搜索和解析是通过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";

这样可以正常加载我div中的所有Rocky影片,而不会刷新页面。

如何正确传递&#34; moviename&#34;输入到php?

非常感谢任何帮助和建议。

谢谢,

Hernando的

2 个答案:

答案 0 :(得分:1)

a)您没有将数据传递给页面(.load中的第二个参数应该是您的表单数据),因此$ themovie的值为null。

b)即使你有方法=&#34; POST&#34;在您的表单上,使用.load假定GET,除非提供的数据是对象。提供表单数据和对象格式(作为POST发送)的一种方法是:

function goSearch(){
   $("#Moviesearchdiv").load("MovieSearch.php",$('#yourFormId').serialize());
}

请注意,您需要在表单中添加ID,并将#yourFormId替换为它。

调试这些类型的AJAX调用时,首先需要知道您尝试与之通信的页面位于您的AJAX调用认为的位置。您知道这是因为当您填写$ themovie时 - 您会得到结果,您也可以在浏览器中的开发人员工具中查看。

其次你需要确保你发送你认为的数据,你可以通过返回$ _POST或$ _GET的print_r()或var_dump()来检查这一点,具体取决于你使用的是什么(或者想一想)你在这种情况下喜欢使用)。

这两个步骤将导致您解决很多问题。

答案 1 :(得分:0)

一些想法:

  • 您实际上是在哪里将文本输入的内容发送到您的php脚本?

  • 尝试使用trim()$_POST的结果进行操作,然后再将其附加到网址。

  • 在变量var_dump()上执行$_POST,看看您的服务器有什么问题 - 您可能会感到惊讶。