2013-05-30 51 views
-1

我想,當選擇更改爲通過AJAX獲取數據,這就是爲什麼我用.trigger()使用觸發器來獲取值

但是,它似乎並不奏效。我可以從數據庫中順利地獲取數據,然後通過AJAX將其傳遞到項目類型。

這。

HTML

<!doctype> 

<html> 
    <head> 
     <title>Coupon Protoype</title> 
     <link rel="stylesheet" type="text/css" href="css/coupon.css"> 
    </head> 
    <body> 
     <div class="body-wrap"> 

      <section class="wrap-form"> 
       <label for="item-types">Item Types</label><select id="item-types"></select> 
       <label for="item-list">Items</label><select id="item-list"></select> 

       <input type="text" placeholder="Check Code" id="input-code"/> 
       <input type="button" id="button-check" value="Check"/> 
      </section> 

      <section class="output-wrap"> 
       <label>Coupon Code:</label> <label id="coupon-code"></label> 

      </section> 

     </div> 
    </body> 
    <script type="text/javascript" src="javascript/jquery-1.10.0.min.js"></script> 
    <script type="text/javascript" src="javascript/coupon.js"></script> 
</html> 

的Javascript

$(document).ready(function(){ 


    function get_items_type(){ 

     $.ajax({ 
       type:'POST', 
       url:'coupon-functions.php', 
       dataType:'json', 
       data:{'switch-num':'1'}, 
      success:function(data){ 

       if(data.error){ 

        alert(data.error); 
       } 
        var html = ''; 
        $.each(data, function(i, item) {  
          html += "<option value="+data[i].item_type_id+">"+data[i].item_type+"</option>"; 
        }); 

        $('#item-types').append(html); 
      } 
     }) 
    } 

/這條線是什麼即時消息說$( 「#項目類型」)。在( 「變」,函數() {

 var item_type_id = $(this).val(); 

     $.ajax({ 
       type:'POST', 
       url:'coupon-functions.php', 
       dataType:'json', 
       data:{'switch-num':'2','item_type_id':item_type_id}, 
      success:function(data){ 

       if(data.error){ 

        alert(data.error); 
       } 
        var items = ''; 

        $('#item-list').html(""); 

        $.each(data, function(i, item) {  
          items += "<option value="+data[i].item_id+">"+data[i].item_name+"</option>"; 
        }); 

        $('#item-list').append(items); 
      } 
     }) 


    }); 

    $("#item-types").trigger("change"); 


    get_items_type(); 


}); 

PHP

<?php 
    include_once('db_connect.php'); 

    $switch_number = $_POST["switch-num"]; 

    switch ($switch_number) { 
     case '1': 
      get_item_list(); 
      break; 

     case '2': 
      get_item(); 
      break; 
    } 

    function get_item_list(){ 

     $get_items = "SELECT * FROM item_type_info"; 

     $query_get_items = mysql_query($get_items); 

     $data = array(); 

     if(!$query_get_items){ 


      $data['error'] = die(mysql_error()); 
     } 

     while($row = mysql_fetch_array($query_get_items)){ 

      $data[] = array('item_type_id' => $row['item_type_id'], 
          'item_type' => $row['item_type']); 
     } 

     echo json_encode($data); 

    } 

    function get_item(){ 
     $item_type_id = $_POST['item_type_id']; 

     $get_items = "SELECT * FROM item_info a 
           LEFT JOIN item_type_info b 
           ON(a.item_type_id = b.item_type_id) 
           WHERE a.item_type_id = '$item_type_id' "; 

     $query_get_item = mysql_query($get_items); 

     $item = array(); 

     if(!$query_get_item){ 

      $item['error']=die(mysql_error()); 
     } 

     while($row = mysql_fetch_array($query_get_item)){ 

      $item[] = array('item_id' => $row['item_id'], 
          'item_name' => $row['item_name']); 
     } 

     echo json_encode($item); 

    } 


?> 

我用.on()作爲.live()的替代品。我只需要使它在加載頁面時工作,觸發器將在選擇列表中進行更改。

+0

我相信它應該是$(「#item-types」)。change(f結()); – Jim

回答

0

我相信你的trigger()功能的理解是手頭的問題。採用trigger()用於手動觸發一個事件,你似乎想擁有,當你選擇框改變你的函數被解僱。

當發生相應的事件時,會觸發任何附加.on()或其快捷方法 的事件處理程序。但是,可以使用.trigger()方法手動觸發 。

更換:

$("#item-types").trigger("change"); 


get_items_type(); 

有:

$("#item-types").on("change", function(){ 
    get_items_type(); 
}); 
到.trigger()的調用 在他們是,如果事件 是由用戶觸發自然相同的順序執行處理程序

Working Demo:http://jsfiddle.net/pQDjy/

+0

不,它不工作..我試圖提醒$(「#item-types」)的值。其空我不知道爲什麼觸發不起作用 – Aoi

+0

我不知道你在做什麼,但上述修改將觸發對選擇框的變化'get_items_type()'函數。看到一個工作示例小提琴鏈接。 – RobB

+0

觸發所謂觸發#項目類型的變化,然後得到的值,然後將它傳遞給阿賈克斯 – Aoi