0

私は jquery が初めてです。このコードが機能しない理由がわかりません。私は3つのドロップダウンボックスを持っています。f_cat1 と f_cat2 に応じて、f_university_name がフェッチされます。f_cat1 と f_cat2 を空にすることはできないため、f_university_name が空かどうかを確認し、データを収集しようとしています。または f_cat1 または f_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();

     $('#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: 返信ありがとうございます。動作するようになりました。しかし、問題は、私の評判が低いとコメントできないことです。私はスタックオーバーフローが初めてで、ルールについて知りませんでした。そして、私は何もクリックすることができません....どうすればこれを取り除くことができますか?

4

3 に答える 3

2

それらは でローカルであるため、関数には変数cat_1とはありません。関数の定義をブロックに移動すると、それらにアクセスできるようになります。cat_2make_change$(document).ready(function () { ... });make_change$(document).ready(function () { ... });

于 2012-08-02T07:38:57.367 に答える
0

変数を document.ready 関数の外に置きます。グローバルアクセスを意味します。その後、好きな場所で使用できます

于 2012-08-02T07:46:22.427 に答える
0

ここで発生する主な問題は、ページが最初にロードされたときにf_cat1との値を読み取り、二度と読み取らないことです。f_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();

     ....

これは、これら 2 つのドロップダウンの値が最初にあったとしても、変数cat1cat2は決して変更されないことを意味します。

これを修正する最も簡単な方法は、関数を呼び出すたびにこれらの変数を読み取ることです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;
    ....
于 2012-08-02T07:51:13.310 に答える