2013-11-02 2 views
3

Я использую следующий код foxycomplete, чтобы получить некоторые результаты из моего db с изображениями. С локальными файлами работает отлично, но я не могу сделать это с помощью mysql.Использование автозаполнения Jquery с изображениями

Вот мой код, который я использую ..

<form id="autocompleteForm" name="autocompleteForm" action="" method="post"> 
    <input type="text" name="s" id="s" value="Search" style="border:none;" /> 
</form> 

Javascript Код:

(function($) { 
    $(document).ready(function() { 


     $('#s').each(function(){ 
     $(this).attr('title', $(this).val()) 
      .focus(function(){ 
      if ($(this).val() == $(this).attr('title')) { 
       $(this).val(''); 
      } 
      }).blur(function(){ 
      if ($(this).val() == '' || $(this).val() == ' ') { 
       $(this).val($(this).attr('title')); 
      } 
      }); 
     }); 

     $('input#s').result(function(event, data, formatted) { 
      $('#result').html(!data ? "No match!" : "Selected: " + formatted); 
     }).blur(function(){  
     }); 

     $(function() {  
     function format(mail) { 
      return "<a href='"+mail.permalink+"'><img src='" + mail.image + "' /><span class='title'>" + mail.title +"</span></a>";   
     } 

     function link(mail) { 
      return mail.permalink 
     } 

     function title(mail) { 
      return mail.title 
     } 

     $("#s").autocomplete(completeResults, { 
      width: $("#s").outerWidth()-2,   
      max: 5,   
      scroll: false, 
      dataType: "json", 
      source: "video_search.php", 
      matchContains: "word", 
      parse: function(data) { 
       return $.map(data, function(row) { 
        return { 
         data: row, 
         value: row.title, 
         result: $("#s").val() 
        } 
       }); 
      }, 
      formatItem: function(item) {     
       return format(item); 
      } 
      }).result(function(e, item) { 
       $("#s").val(title(item)); 
       //location.href = link(item); 
      });      
     }); 

    }); 
})(jQuery); 

И PHP код, чтобы получить мои данные:

<?php 
require "connectiondb.php"; 

if(isset($_REQUEST['s'])) 
{ 

$queryString = mysql_real_escape_string($_REQUEST['s']); 

echo'var completeResults = [{'; 

$ss = mysql_query ("SELECT title, image FROM users WHERE title LIKE '$queryString%' LIMIT 7"); 
while($result = mysql_fetch_assoc($ss)) { 

echo ' 
    "permalink": "index.html", 
    "image": "'.$result['image'].'", 
    "title": "'.$result['title'].'" 
},'; 

} 

echo '}];'; 


}else{ 

} 
?> 

Спасибо, ребята!

+0

вам нужен полный URL в «источник» вместо того, чтобы просто делать имя файла php? –

+1

'$ ('#s') .each ...'? Там должен быть только один '$ ('# s')' - идентификаторы должны быть уникальными – Popnoodles

+0

Откройте консоль (в Firefox используйте расширение firebug, щелкнув правой кнопкой мыши Chrome, выберите Inspect Element, перейдите на вкладку Console), вы можете увидеть 404 ошибка. Сообщите нам, какие ошибки есть, если они есть. – Popnoodles

ответ

1

Что находится в $ result ['image']? Если он содержит сам файл изображения (двоичные данные), а не только путь, то вам нужно создать еще один файл (image.php? S = id), который будет возвращать только эти двоичные данные с соответствующим заголовком .. то есть

<?php 

header('Content-Type: image/jpeg'); 

// sql stuff 

echo $result['image']; 

?> 

в основной файл, то вы будете называть просто

"image": "'.image.php?id='.$result['id'].'", 

также, то не мучайте себя и использовать json_encode() :)

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