Javascript jquery查询字符串创建问题

Javascript jquery查询字符串创建问题,javascript,jquery,Javascript,Jquery,在我的php页面中,我使用jquery代码使其动态化,我在创建查询字符串时遇到问题,我的代码示例很小 $.listSemester = function(selStreamId) { var obj = { year: $( "#batches option:selected" ).text() }; $.ajax({ url:"searchStream.php?" + $.param(obj), data:{ stream

在我的php页面中,我使用jquery代码使其动态化,我在创建查询字符串时遇到问题,我的代码示例很小

$.listSemester = function(selStreamId) {
    var obj = { year: $( "#batches option:selected" ).text() };
    $.ajax({
        url:"searchStream.php?" + $.param(obj),
        data:{
            streamId:selStreamId,
        },
        success: function(data) {
            $('#sem').html(data);
        },
        error: function(error) {
            alert(error);
        }
    });
}
我想在查询字符串中传递变量year,它的值来自另一个jquery代码。我的完整jquery代码是

$(document).ready(function() {
    $('.sidebar-menu .system').addClass('active');
    $('.sidebar-menu .system .student').addClass('active');
    $(".sidebar-menu .system").tree();
    $('#streams').change(function() {
        $('#branches').html("<option value=''>-- Select --</option>");
        $('#batches').html("<option value=''>-- Select --</option>");
        $('.divAfter').hide();
        $('.divBefore').show();
        $('.semesterAfter').hide();
        $('.semesterBefore').show();
        $('.btnAdd').hide();
        $('.btnExcel').hide();
        $('.studList').hide();
        if($(this).val() == '') {
        }
        else {
            $.when($.streamSelection($(this).val())).then($.listSemester($(this).val()));
        }
    });
    $('#branches').change(function() {
        $('#batches').html("<option value=''>-- Select --</option>");
        $('.divAfter').hide();
        $('.divBefore').show();
        $('.semesterAfter').hide();
        $('.semesterBefore').show();
        $('.btnAdd').hide();
        $('.btnExcel').hide();
        $('.studList').hide();
        if($(this).val() == '') {
        }
        else {
            $.branchSelection($(this).val());
        }
    });
    $('#batches').change(function() {
        if($(this).val() == '') {
            $('.divAfter').hide();
            $('.divBefore').show();
            $('.semesterAfter').hide();
            $('.semesterBefore').show();
            $('.btnAdd').hide();
            $('.btnExcel').hide();
            $('.studList').hide();
        }
        else {
            $('.divBefore').hide();
            $('#division').val('');
            $('.divAfter').show();
        }
    });
    $('#division').change(function() {
        $('.studList').hide();
        $('.semesterAfter').hide();
        $('.semesterBefore').show();
        $('.btnAdd').hide();
        $('.btnExcel').hide();
        if($(this).val() != '') {
            $('.semesterBefore').hide();
            $('#sem').val('');
            $('.semesterAfter').show();
        }
    });
    $('#sem').change(function() {
        $('.btnAdd').hide();
        $('.btnExcel').hide();
        $('.studList').hide();
        if($(this).val() != '') {
            $.when($('.btnAdd').attr('href', 'add.php?streamId='+$('#streams').val()+'&branchId='+$('#branches').val()+'&batchId='+$('#batches').val()+'&divisionId='+$('#division').val()+'&semId='+$('#sem').val()))
            .then($('.btnExcel').attr('href', 'studExcel.php?streamId='+$('#streams').val()+'&branchId='+$('#branches').val()+'&batchId='+$('#batches').val()+'&divisionId='+$('#division').val()+'&semId='+$('#sem').val()))
            .then($('.btnAdd').show())
            .then($.studentList($('#streams').val(),$('#branches').val(),$('#batches').val(),$('#division').val(),$('#sem').val()));
        }
    });
});
$.streamSelection = function(selStreamId) {
    $.ajax({
        url:"searchBranch.php",
        data:{
            streamId:selStreamId
        },
        success: function(data) {
            $('#branches').html(data);
        },
        error: function(error) {
            alert(error);
        }
    });
}
$.branchSelection = function(selBranchId) {
    $.ajax({
        url:"searchBatch.php",
        data:{
            branchId:selBranchId,
        },
        success: function(data) {
            $('#batches').html(data);
        },
        error: function(error) {
            alert(error);
        }
    });
}
$.listSemester = function(selStreamId) {
    var obj = { year: $( "#batches option:selected" ).text() };
    $.ajax({
        url:"searchStream.php?" + $.param(obj),
        data:{
            streamId:selStreamId,
        },
        success: function(data) {
            $('#sem').html(data);
        },
        error: function(error) {
            alert(error);
        }
    });
}
$.studentList = function(streamId,branchId,batchId,divisionId,semId) {
    $.ajax({
        url:"searchStudent.php",
        data:{
            selStreamId     :   streamId,
            selBranchId     :   branchId,
            selBatchId      :   batchId,
            selDivisionId   :   divisionId,
            selSemId        :   semId
        },
        success: function(data) {
            $('.studList').html(data);
            $('.studList').show();
            if(data.length > 0)
                $('.btnExcel').show();
        },
        error: function(error) {
            alert(error);
        }
    });
}
$(文档).ready(函数(){
$('.sidebar menu.system').addClass('active');
$('.sidebar menu.system.student').addClass('active');
$(“.sidebar menu.system”).tree();
$('#streams').change(function(){
$('#branchs').html(“--Select--”);
$('#batches').html(“--Select--”);
$('.divAfter').hide();
$('.divBefore').show();
$('.semesterAfter').hide();
$('.semesterBefore').show();
$('.btnAdd').hide();
$('.btnExcel').hide();
$('.studList').hide();
if($(this.val()=''){
}
否则{
$.when($.streamSelection($(this.val()))。然后($.listSerm($(this.val()));
}
});
$(“#分支”).change(function(){
$('#batches').html(“--Select--”);
$('.divAfter').hide();
$('.divBefore').show();
$('.semesterAfter').hide();
$('.semesterBefore').show();
$('.btnAdd').hide();
$('.btnExcel').hide();
$('.studList').hide();
if($(this.val()=''){
}
否则{
$.branchSelection($(this.val());
}
});
$('#批处理')。更改(函数(){
if($(this.val()=''){
$('.divAfter').hide();
$('.divBefore').show();
$('.semesterAfter').hide();
$('.semesterBefore').show();
$('.btnAdd').hide();
$('.btnExcel').hide();
$('.studList').hide();
}
否则{
$('.divBefore').hide();
$('分割').val('');
$('.divAfter').show();
}
});
$('#除法')。更改(函数(){
$('.studList').hide();
$('.semesterAfter').hide();
$('.semesterBefore').show();
$('.btnAdd').hide();
$('.btnExcel').hide();
if($(this.val()!=“”){
$('.semesterBefore').hide();
$('#sem').val('');
$('.semesterAfter').show();
}
});
$('#sem')。更改(函数(){
$('.btnAdd').hide();
$('.btnExcel').hide();
$('.studList').hide();
if($(this.val()!=“”){
$.when($('.btnAdd').attr('href','add.php?streamId='+$('.#streams').val()+'&branchId='+$('.#branchs').val()+'&batchId='+$('.#batches').val()+'.&divisionId='+$('.#division').val()+'&semId='+$('.#sem.val())
.then($('.btnExcel').attr('href','studExcel.php?streamId='+$('#streams').val()+'&branchId='+$('#branchs').val()+'&batchId='+$('#batches').val()+'&divisionId='+$('#division').val()+'&semId='+$('.#sem.val())
。然后($('.btnAdd').show()
。然后($.studentList($('#streams').val(),$('#branchs').val(),$('#batches').val(),$('#division').val(),$('#sem').val());
}
});
});
$.streamSelection=函数(selStreamId){
$.ajax({
url:“searchBranch.php”,
数据:{
streamId:selStreamId
},
成功:功能(数据){
$('#branchs').html(数据);
},
错误:函数(错误){
警报(错误);
}
});
}
$.branchSelection=函数(selBranchHid){
$.ajax({
url:“searchBatch.php”,
数据:{
布兰奇:塞尔布兰奇,
},
成功:功能(数据){
$('#batches').html(数据);
},
错误:函数(错误){
警报(错误);
}
});
}
$.ListSerm=函数(selStreamId){
var obj={year:$(“#batches option:selected”).text();
$.ajax({
url:“searchStream.php?”+$.param(obj),
数据:{
streamId:selStreamId,
},
成功:功能(数据){
$('#sem').html(数据);
},
错误:函数(错误){
警报(错误);
}
});
}
$.studentList=函数(streamId、branchId、batchId、divisionId、semId){
$.ajax({
url:“searchStudent.php”,
数据:{
selStreamId:streamId,
塞尔布兰奇:布兰奇,
selBatchId:batchId,
selDivisionId:divisionId,
赛米德:赛米德
},
成功:功能(数据){
$('.studList').html(数据);
$('.studList').show();
如果(data.length>0)
$('.btnExcel').show();
},
错误:函数(错误){
警报(错误);
}
});
}

现在是查询字符串中的pass noting。

您不能在回调函数中使用
,它不会保存在闭包中。创建一个局部变量

$('#streams').change(function() {
    var $thisVal = $(this).val();
    $('#branches').html("<option value=''>-- Select --</option>");
    $('#batches').html("<option value=''>-- Select --</option>");
    $('.divAfter').hide();
    $('.divBefore').show();
    $('.semesterAfter').hide();
    $('.semesterBefore').show();
    $('.btnAdd').hide();
    $('.btnExcel').hide();
    $('.studList').hide();
    if($thisVal == '') {
    }
    else {
        $.when($.streamSelection($thisVal)).then(function() {
            $.listSemester($this.val());
        });
    }
});
另外,
.then()
的参数必须是一个函数,否则将立即调用
$.listSerm
,而不是在AJAX调用返回时调用

$('#streams').change(function() {
    var $this = $(this);
    $('#branches').html("<option value=''>-- Select --</option>");
    $('#batches').html("<option value=''>-- Select --</option>");
    $('.divAfter').hide();
    $('.divBefore').show();
    $('.semesterAfter').hide();
    $('.semesterBefore').show();
    $('.btnAdd').hide();
    $('.btnExcel').hide();
    $('.studList').hide();
    if($this.val() == '') {
    }
    else {
        $.when($.streamSelection($this.val())).then(function() {
            $.listSemester($this.val());
        });
    }
});
或者,因为您只对值感兴趣,所以可以将其保存在变量中

$('#streams').change(function() {
    var $thisVal = $(this).val();
    $('#branches').html("<option value=''>-- Select --</option>");
    $('#batches').html("<option value=''>-- Select --</option>");
    $('.divAfter').hide();
    $('.divBefore').show();
    $('.semesterAfter').hide();
    $('.semesterBefore').show();
    $('.btnAdd').hide();
    $('.btnExcel').hide();
    $('.studList').hide();
    if($thisVal == '') {
    }
    else {
        $.when($.streamSelection($thisVal)).then(function() {
            $.listSemester($this.val());
        });
    }
});
$('#streams')。更改(函数(){
var$thisVal=$(this.val();
$('#branchs').html(“--Select--”);
$('#batches').html(“--Select--”);
$('.divAfter').hide();
$('.divBefore').show();
$('.semesterAfter').hide();
$('.semesterBefore').show();
$('.btnAdd').hide();
$('.btnExcel').hide();
$('.studList').hide();
如果($thisVal=''){
}
否则{
$.when($.streamSelection($thisVal)).then(function(){
$.listSerm($this.val());
});
}
});

您需要对其他函数进行类似的修复。

什么是您的
$.param(obj)
返回的??警报或控制台。记录obj的值,并查看是否在变量中获得正确的值放置关键字
调试器在ajax调用行上方,即:在`var obj={year:$(“#batches选项:selecte