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

如何正确将“电影名称”输入传递给php?

任何帮助和建议,我们将不胜感激。

谢谢,

赫南多

最佳答案

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

b)即使您的表单上有method =“ POST”,使用.load仍假定为GET,除非提供的数据是对象。提供表单数据并采用对象格式(以POST形式发送)的一种方法是:

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


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

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

其次,您需要确定要发送的数据是您所想的,您可以根据所使用的方式返回$ _POST或$ _GET的print_r()或var_dump()进行检查(或认为您正在使用类似在这种情况下)。

这两个步骤将帮助您解决所发现问题的很大一部分。

关于javascript - 将文本输入变量传递给PHP以进行Div加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23412506/

10-12 00:30
查看更多