2013-03-18 71 views
2

我試圖讓下拉框通過使用jquery/ajax腳本來改變第二個下拉框。 Firebug顯示Jquery正在工作,但我的腳本根本沒有顯示。Jquery腳本不顯示在螢火蟲或燒製

<script type="text/javascript"> 
     function ajaxfunction(parent) 
     { 
      $.ajax({ 
       url: '../functions/process.php?parent=' + parent; 
       success: function(data) { 
        $("#sub").html(data); 
       } 
      }); 
     } 
    </script> 

process.php只是一個MySQL查詢(工作)

我最初的下拉框,由MySQL查詢

<select name="front-size" onchange="ajaxfunction(this.value)"> 
//Query 
</select> 

然後填充第二個下拉框只是

<select name = "front-finish" id="sub"> 
</select> 

我該如何解決這個問題?

+0

你可以在Firebug中看到你的ajax調用嗎?控制檯中有任何錯誤嗎? – MatRt 2013-03-18 06:23:39

+0

啊我現在做.ReferenceError:ajaxfunction沒有定義 – 2013-03-18 06:25:31

+0

看看我的ans它會爲你工作 – Gautam3164 2013-03-18 06:26:06

回答

1

調用內聯函數並不好......因爲web 2.0標準建議使用不顯眼的JS而不是onevent屬性....檢查爲什麼here .. 其他使用AJAX thigs..correct的方法是使用類型和數據AJAX選項可以在控制器發送值..

<script type="text/javascript"> 
    $(function(){ 
    $('select[name="front-size"').change(function() 
    { 
     $.ajax({ 
      url: '../functions/process.php', 
      type:'get', 
      data:{'value' : $(this).val()}, 
      dataType:"html", //<--- here this will take the response as html... 
      success: function(data) { 
       $("#sub").html(data); 
      } 
     }); 
    }); 
}); 
</script> 

和你proces.php應..

<?php 
    //db query ...thn get the value u wanted.. 
    //loop through it.. 
    $optVal .= "<option value="someDbValue">some DDB values</option>"; 
    // end loop 

    echo $optValue;exit; 

更新

看起來你還是有onchange="ajaxfunction(this.value)"這在你選擇刪除,它不需要在JavaScript中ajaxfunction太...

<select name="front-size" >  
        //----^ here remove that 
+0

好的建議!但它不是問題的原因 – MatRt 2013-03-18 06:30:09

+0

它應該像$ optVal。 =「<選項值..」就像那樣它將只返回DB – Gautam3164 2013-03-18 06:39:05

+0

opppss中的最後一行!是的,謝謝.. :) – bipen 2013-03-18 06:40:47

0

在你process.php給這樣

echo "<select name='front-finish' id='sub' onchange='ajaxfunction(this.value)'>"; 

這樣,你需要通過Ajax的「平變化」功能添加到新創建的選擇框

,也可以刪除平變化的功能,寫像

$("select[name^='front-']").live('change',function(){ 
    //Do your ajax call here 
}); 
+0

沒有必要在前端添加事件監聽器。 – MatRt 2013-03-18 06:31:15

+0

Iam給出2個soultions和第二個如果他有2個或更多的選擇框,並且他正在通過ajax更新整個選擇框,則會更好地工作....這就是爲什麼不是每個ajax調用都添加onchange事件,我建議添加事件....我認爲它應該更好的 – Gautam3164 2013-03-18 06:33:44

0

使用jQuery.on()這將允許我們在動態加載的內容上添加事件。

$('select[name^="front-"]').on('change',function(e){ 
    e.preventDefault(); 
    var value = $(this).val(); 
    ajaxfunction(value); 
}); 

[name^="front-"]這將選擇具有與front-name啓動所有SELECT框。