我有一个网页,我想有一个输入框和搜索按钮。它将搜索电影匹配输入框。搜索和解析是通过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,如预期,没有页面刷新。
如何才能正确地将“育婴名”输入传递给php?
任何帮助和建议都是非常感谢的。
谢谢,
赫南多
发布于 2014-05-01 17:04:47
( a)您没有将数据传递给页面( .load中的第二个参数应该是表单数据),因此$themovie的值为null。
( b)即使表单上有method="POST“,但除非提供的数据是对象,否则使用.load假设GET。以对象的格式(以POST的形式发送)提供表单数据的一种方法是:
function goSearch(){
$("#Moviesearchdiv").load("MovieSearch.php",$('#yourFormId').serialize());
}注意,您需要向表单中添加一个ID,并将#yourFormId替换为它。
在调试这些类型的AJAX调用时,首先您需要知道要与之通信的页面位于AJAX调用所认为的位置。您知道,这是因为当您填写$themovie时,您可以在浏览器中的开发工具中检查这个结果。
其次,您需要确保您正在发送您认为是的数据,您可以通过返回print_r()或var_dump() of $_POST或$_GET来检查这一点,这取决于您使用的是什么(或者在本例中您认为使用的是什么)。
这两个步骤将导致你解决一个很好的百分比你发现的问题。
发布于 2014-05-01 17:03:51
一些想法:
trim()附加到url之前,尝试在您从$_POST获得的结果上使用它。var_dump()上做一个$_POST,看看服务器上会出现什么--您可能会感到惊讶。https://stackoverflow.com/questions/23412506
复制相似问题