2010-03-24 1 views
0

Я пытаюсь опубликовать значение поля ввода (в данном случае ссылку imdb) на мою страницу imdbgrabber.php и вернуть ему этот фильм в поле qtip.JQuery qtip ajax issue

EDIT: Просмотреть здесь 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--> 

Я уверен, что это простая ошибка где-то, но после нескольких часов, глядя я думал я бы попросил экспертов.

ответ

1

Согласно документации, данные для qtip при извлечении через AJAX должны быть парами ключ-значение. Попробуйте следующее:

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 неправильно индексируется в массив совпадений. Массивы основаны на нуле, поэтому первое совпадение совпадает с индексом 0, а не с одним. Фактически, вы можете получать только одно соответствие с вашими регулярными выражениями, поскольку у вас есть только одно групповое выражение.

Попробуйте изменить его к этому:

//gets the match content 
function get_match($regex,$content) 
{ 
    preg_match($regex,$content,$matches); 
    return $matches[0]; 
} 
+0

Еще же проверка вопрос здесь: http://escrow.aliexpress.com //movieo.no-ip.org/. Наведите указатель мыши на изображение, чтобы увидеть, что произойдет – user272899

+0

Я вижу. Проблема была не в запросе, а в коде. Будет обновляться. – tvanfosson

+0

Изменена эта проблема. Ajax публикует информацию в порядке, поэтому проблема с php где-то – user272899

 Смежные вопросы

  • Нет связанных вопросов^_^