2013-02-27 3 views
0

Мне нужна помощь с двумя вещами. Во-первых: если я удалю пустую кнопку отправки. Это должно показать мне ошибку. Второе: если будет 0 результатов, это даст ошибку.Ajax поиск сообщения об ошибке

$(document).ready(function(){ 
    $(".search").click(function(){ 
     $.post("search.php", { keywords: $(".keywords").val() }, function(data){ 
      $("div#search").empty() 
      $.each(data, function(){ 
       $("div#search").append("- <a href='#?id=" + this.id + "'>" + this.title + "</a><br>"); 
      }); 
     }, "json"); 
    }); 
}); 

-

$query = $db->prepare("SELECT `media`.`id`, `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords"); 

$keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : ''; 

if (empty($keywords) === true) { 
    $error = 'error'; 
    echo json_encode($error); 
} else { 
    $query->bindValue(':keywords', '%' . $keywords . '%', PDO::PARAM_STR); 
    $arr = array(); 
    $query->execute(); 
    while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
     $arr[] = array("id" => $row["id"], "title" => $row["title"]); 
    } 
    echo json_encode($arr); 
} 
+0

Ват, вы имеете в виду под ": если я удаляю пустую кнопку отправки"?? –

+0

Возможно, сообщение об ошибке может помочь. Отправьте его. – Ghigo

+0

http://jsfiddle.net/Vpxrx/ мой скрипт – sw0o0sh

ответ

1

OK Я кропотливо воссозданный (jsfiddle не позволяет копировать/вставить) это на моей локальной машине. Ваш HTML-код/​​JS должен выглядеть следующим образом:

<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <input type="text" name="search" class="keywords"> 
     <input type="submit" name="submit" class="search"> 
     <div id="search"></div> 
     <script> 
      $(document).ready(function(){ 
       $(".search").click(function(){ 
        $.post(
         "search.php", 
         { keywords: $(".keywords").val() }, 
         function(data){ 
           $("div#search").empty() 
          $("div#search").append(data); 
         }, 
         "json" 
        ); 
       }); 
      }); 
     </script> 
    </body> 
</html> 

И для страницы PHP search.php:

<?php 
$keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : ''; 
if (empty($keywords) === true) { 
    echo json_encode("error"); 
} 
else { 
    // run mysql commands 
    // if resultset == empty 
    // echo json_encode("error"); 
    echo json_encode("actual data"); 
} 
?> 

Для разбора JSON данных в JavaScript сделать это:

$.post(
    "search.php", 
    { keywords: $(".keywords").val() }, 
    function(data) { 
    $("div#search").empty(); 
    obj = JSON.parse(data); 
    $("div#search").append(obj.id + " " + obj.title); 
    }, 
    "json" 
); 
+0

Сообщение все еще ничего не показывает – sw0o0sh

+0

http://jsfiddle.net/Vpxrx/ – sw0o0sh

+0

Ваш php-код не проверяет наличие какого-либо rowcount в этом jsfiddle. Попробуйте избавиться от php-кода (прокомментируйте все это), а затем выполните «echo json_encode (« test »); и посмотрите, вернет ли страница PHP. – Husman

0

попробуйте использовать $(this) вместо this

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