为什么这个jquery代码不起作用

why this jquery code is not working?

本文关键字:代码 不起作用 jquery 为什么      更新时间:2023-09-26

我是jquery的新手。我不知道为什么这个代码不起作用。我有3个下拉框。根据f_cat1和f_cat2,将提取f_university_name,因为f_cata1和f_cat2不能为空,这就是为什么我要检查f_unicity_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:感谢大家回复我,它已经开始工作了。但问题是我无法评论我的声誉很低。我是堆栈溢出的新手,我不知道规则。我无法点击任何内容。。。。我怎么能摆脱这个?

函数make_change中没有变量cat_1cat_2,因为它们在$(document).ready(function () { ... });中是本地的。将make_change函数的防御移动到$(document).ready(function () { ... });块中,然后您就可以访问它们。

将变量放在document.ready函数之外。意味着全局访问。然后,您可以在任何需要的地方使用它们

这里的主要问题是,当页面第一次加载时,您读取了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都不会改变。

解决这个问题的最简单方法是每次调用函数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;
    ....