Javascript 如何使用动态变量更改autcomplete的源?

Javascript 如何使用动态变量更改autcomplete的源?,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我希望你能跟着我进去 我正试图在jquery自动完成中向我的源代码发送一个额外的变量。这通常可以通过在您的源URL之后添加变量来实现,如:source:'myURL.php?supplier=myvariable' 然而,我试图发送的变量是动态的,它是一个变量,根据复选框的选中与否,它可以是真的,也可以是假的。像这样: var dynamicVar = $('#y').prop('checked'); $('#y').change(function(){ dynamicVar = $(

我希望你能跟着我进去

我正试图在jquery自动完成中向我的源代码发送一个额外的变量。这通常可以通过在您的源URL之后添加变量来实现,如:
source:'myURL.php?supplier=myvariable'

然而,我试图发送的变量是动态的,它是一个变量,根据复选框的选中与否,它可以是真的,也可以是假的。像这样:

var dynamicVar = $('#y').prop('checked');

$('#y').change(function(){
    dynamicVar = $('#y').prop('checked');
    console.log(dynamicVar);
});
现在,我尝试在我的源代码中使用此变量进行自动完成,如下所示:

source:'myURL.php?supplier='+dynamicVar
如中所示(如果您在控制台中查找GET URL),无论复选框是否选中,此变量始终为false

如何编辑代码,使演示中请求的URL为
http://fiddle.jshell.net/DLLVw/482/show/myURL.php?supplier=false&term=whatItyped
当复选框未选中时,以及
http://fiddle.jshell.net/DLLVw/482/show/myURL.php?supplier=true&term=whatItyped
复选框何时被选中

请在输入字段中键入以查看GET url

更新:artm的代码返回正确的内容,但是这会破坏输入上的自动完成功能

原始非伪代码:

jQuery:

var dynamicVar = $('#zxc').prop('checked');

$('#zxc').change(function(){
    dynamicVar = $('#zxc').prop('checked');
    dynamicVar = $('#zxc').is(':checked');
    console.log(dynamicVar);
});

function getChecked(){
    return $('#zxc').is(':checked');
}
$('#q').autocomplete({
    source: function(request, response) {
        $.ajax({
          url: "getklanten.php",
          data: {
            term : request.term,
            supplier : $('#zxc').is(':checked')
          }
        });
    }
})  .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li>" )
    .append( "<a>" + item.naam + "</a>" )
    .appendTo( ul );
};

将dynamicVar传递给autocomplete时,它使用调用autocomplete时dynamicVar的值。因此,它总是错误的,没有任何状态,因为当您更改复选框时,dynamicVar不会更改。如果要传递动态值,需要使用:

$('#x').autocomplete({
    //source:'myURL.php?supplier='+dynamicVar
    source: function(request, response) {
        $.ajax({
         url: "myURL.php",
         data: {
            term : request.term,
            supplier : $('#y').is(':checked')
          }
        });
    }
});

这个dynamicVar变量是什么。你在什么地方也用过吗?如果不只是尝试
source:'myURL.php?supplier='+$('#y').prop('checked')这将正确调用PHP文件,它也会按预期返回数据,但由于某些原因,它会破坏自动完成列表。不幸的是,我不能在小提琴中重新创建它,因为我不能调用从JSFIDLE返回数据的实际PHP脚本。@user3008011当您使用原始
源代码
时,所有这些都能工作吗?只有当你使用这里的代码时它才会断开?如果是这种情况,请切换它们,即数据:{supplier:$('#y')。is(':checked')、term:request.term}`或者听起来像是一个新问题。我无法使用您提供的代码获得自动完成功能。这很奇怪,因为它确实在控制台中返回了正确的数据。我的实际代码比虚拟代码稍微复杂一点,所以我把它包括在原始问题中。对编辑来说太晚了。当我将ajax函数替换为我的原始url时,它会按照预期工作,当然不会丢失变量。
$('#x').autocomplete({
    //source:'myURL.php?supplier='+dynamicVar
    source: function(request, response) {
        $.ajax({
         url: "myURL.php",
         data: {
            term : request.term,
            supplier : $('#y').is(':checked')
          }
        });
    }
});