我正在尝试将输入框的值(在本例中为imdb链接)发布到我的imdbgrabber.php页面,并让它将该影片的信息返回到qtip框中。
编辑:查看此处http://movieo.no-ip.org/将鼠标悬停在图片上,您会看到错误。
一切正常,直到我尝试将变量发布到imdbgrabber页面。这是代码。
使用Javascript:
var link = $("#link").val();
var imdbLink = 'link='+ link;
$(".moviebox").qtip({
style: { name: 'cream' },
content: {
method: 'GET',
data: imdbLink,
url: '/includes/imdbgrabber.php',
text: '<img class="throbber" src="/images/loading.gif" alt="Loading..." />'
},
position: {
corner: {
target: 'bottomright',
tooltip: 'bottomleft'
}
}
});
HTML:
<!--start moviebox-->
<div class="moviebox">
<a href="#">
<img src="http://1.bp.blogspot.com/_mySxtRcQIag/S6deHcoChaI/AAAAAAAAObc/Z1Xg3aB_wkU/s200/rising_sun.jpg" />
<form method="get" action="">
<input type="text" name="link" id="link" style="display:none" value="http://www.imdb.com/title/tt0367882"/>
</form>
</a>
</div>
<!--end moviebox-->
最后是php:
<?php
$url=$_GET['link'];
//$url = 'http://www.imdb.com/title/tt0367882/';
//get the page content
$imdb_content = get_data($url);
//parse for product name
$name = get_match('/<title>(.*)<\/title>/isU',$imdb_content);
$director = strip_tags(get_match('/<h5[^>]*>Director:<\/h5>(.*)<\/div>/isU',$imdb_content));
$plot = get_match('/<h5[^>]*>Plot:<\/h5>(.*)<\/div>/isU',$imdb_content);
$release_date = get_match('/<h5[^>]*>Release Date:<\/h5>(.*)<\/div>/isU',$imdb_content);
$mpaa = get_match('/<a href="\/mpaa">MPAA<\/a>:<\/h5>(.*)<\/div>/isU',$imdb_content);
$run_time = get_match('/Runtime:<\/h5>(.*)<\/div>/isU',$imdb_content);
$rating = get_match('/<div class="starbar-meta">(.*)<\/div>/isU',$imdb_content);
////build content
//$content = '<h2>Film</h2><p>'.$name.'</p>'
// . '<h2>Director</h2><p>'.$director.'</p>'
// . '<h2>Plot</h2><p>'.substr($plot,0,strpos($plot,'<a')).'</p>'
// . '<h2>Release Date</h2><p>'.substr($release_date,0,strpos($release_date,'<a')).'</p>'
// . '<h2>MPAA</h2><p>'.$mpaa.'</p>'
// . '<h2>Run Time</h2><p>'.$run_time.'</p>'
// . '<h2>Full Details</h2><p><a href="'.$url.'" rel="nofollow">'.$url.'</a></p>';
//gets the match content
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[1];
}
//gets the data from a URL
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
<!--start infobox-->
<div class="info">
<span>
<?php echo '<strong>'.$name.'</strong>' ?>
</span>
<img src="http://1.bp.blogspot.com/_mySxtRcQIag/S6deHcoChaI/AAAAAAAAObc/Z1Xg3aB_wkU/s200/rising_sun.jpg" />
<div class="plot">
<?php echo ''.substr($plot,0,strpos($plot,'<a')).'</div>' ?>
</div>
<div class="runtime">
<?php echo'<strong>Run Time</strong><br />'.$run_time.'</div>' ?>
</div>
<div class="releasedate">
<?php echo '<strong>Release Date</strong><br />'.substr($release_date,0,strpos($release_date,'<a')).'</div>' ?>
</div>
<div class="director">
<?php echo '<strong>Director</strong><br />'.$director.'' ?>
</div>
<div class="rating">
<?php echo '<strong>Rating</strong><br />'.$rating.'' ?>
</div>
</div>
<!--end infobox-->
我确信这是一个简单的错误,但看了几个小时后,我想我会问专家。
答案 0 :(得分:1)
根据文档,通过AJAX获取时qtip的数据需要是键值对。试试这个:
var link = $("#link").val();
var imdbLink = { "link" : link }; // note change to data...
$(".moviebox").qtip({
style: { name: 'cream' },
content: {
method: 'GET',
data: imdbLink, // you could make this { "link" : link }
url: '/includes/imdbgrabber.php',
text: '<img class="throbber" src="/images/loading.gif" alt="Loading..." />'
},
position: {
corner: {
target: 'bottomright',
tooltip: 'bottomleft'
}
}
});
此外,您的get_match例程似乎不正确地索引到matches数组中。数组是从零开始的,因此第一个匹配是索引0处的匹配,而不是一个匹配。实际上,由于您只有一个分组表达式,因此您只能使用正则表达式进行单个匹配。
尝试将其更改为:
//gets the match content
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[0];
}