2012-08-02 59 views
0

我是jquery中的新成員。我不知道爲什麼這個代碼不起作用。我有3個下拉框。根據f_cat1和f_cat2,f_university_name將被提取,因爲f_cat1和f_cat2不能爲空,這就是爲什麼我要檢查f_university_name是否爲空,試圖收集數據。或f_cat1或f_cat2被更改,也試圖執行此操作。爲什麼這個jQuery代碼不工作?

你願意幫助我嗎?這裏是我的代碼:

$(document).ready(function(){ 

    var cat1= $('#f_cat1').val(); // f_cat1,f_cat2 is the id of a dropdown box 
    var cat2= $('#f_cat2').val(); 

    $('#f_cat1').change(make_change); 
    $('#f_cat2').change(make_change); 

    var uni_name= $('#f_university_name').val(); 
    if(uni_name=="") 
    { 
     make_change(); 
    } 

}); 

function make_change() 
{ 
    var post_url ="<?php echo $c_link.'get_university/';?>"+ cat1+'/'+cat2; 
    // alert(post_url); 
    $.ajax({ 
     type: "POST", 
     url: post_url, 
     // dataType : "JSON", 
     success: function(unis) 
     { 
      // alert('hi'); 
      $('#f_university_name').empty(); 
      $.each(unis,function(university_id,university_name) 
      { 
       var opt = $('<option/>'); 
       opt.val(university_id); 
       opt.text(university_name); 

       $('#f_university_name').append(opt); 
      }); 


    } //end success 
    }); //end AJAX 
} 

編輯1後:感謝所有回覆我,它已開始工作。但問題是我無法評論我的聲望低。我是新來堆棧溢出,我不知道規則。而且我無法點擊任何東西....我怎麼能擺脫這個?

+0

Firebug的調試! – Aelios 2012-08-02 07:38:30

回答

2

您的函數make_change中沒有變異cat_1cat_2,因爲它們在$(document).ready(function() { ... });中位於本地。將make_change函數的調用移動到$(document).ready(function() { ... });塊中,然後您就可以訪問它們。

0

將您的變量放在document.ready函數之外。意味着全球訪問。然後你就可以使用它們。無論您想

0

你要在這裏的主要問題是,你讀的f_cat1f_cat2當第一次加載頁面的值,並且永遠不會再閱讀:

$(document).ready(function(){ 

    var cat1= $('#f_cat1').val(); // f_cat1,f_cat2 is the id of a dropdown box 
    var cat2= $('#f_cat2').val(); 

    .... 

這意味着無論這兩個下拉列表的值是在開始時,變量cat1cat2都不會改變。

的方法是怎樣來解決這個問題,是閱讀這些變量在每次thim調用該函數make_change

function make_change() 
{ 
    var cat1= $('#f_cat1').val();  
    var cat2= $('#f_cat2').val(); 
    var post_url ="<?php echo $c_link.'get_university/';?>"+ cat1+'/'+cat2; 
    ....