Javascript可以很好地处理硬编码字符串,但不能处理变量

Javascript可以很好地处理硬编码字符串,但不能处理变量,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个问题,我整个上午都在挣扎,所以我觉得是时候寻求帮助了!我有一个javascript函数,它将用户输入的值输入到自动完成框中,使用AJAX将该值发送到php脚本,php脚本查询数据库,然后用可能的选项填充下面的框。问题是,当我在所选选项中硬编码时,这一切都可以正常工作,如下所示: var selected="Ed Clancy"; 但当它从盒子里把它拉出来的时候就不会了,所以: var selected = this.getValue(); 我试着用一个警告框来调试它,但两个框中的字符

我有一个问题,我整个上午都在挣扎,所以我觉得是时候寻求帮助了!我有一个javascript函数,它将用户输入的值输入到自动完成框中,使用AJAX将该值发送到php脚本,php脚本查询数据库,然后用可能的选项填充下面的框。问题是,当我在所选选项中硬编码时,这一切都可以正常工作,如下所示:

var selected="Ed Clancy";
但当它从盒子里把它拉出来的时候就不会了,所以:

var selected = this.getValue();
我试着用一个警告框来调试它,但两个框中的字符串都是一样的,所以我完全困惑了!有什么想法吗?完整代码如下:

$(riderSelected).on('selectionchange', function(event){
    var selected = this.getValue();
    //var selected="Ed Clancy";
    alert(selected);
    $('#nap4').removeAttr('disabled');
    $('#nap4').empty();
    $('#nap4').append($("<option>-select-</option>"));

    $.ajax({ 
type: "GET",
url: 'getbiketype.php',
data: { name: selected },
success:  function(data) {
  console.log(data);
  $('#nap4').append(data);
}
});

});
$(已选)。on('selectionchange',函数(事件){
var selected=this.getValue();
//var selected=“Ed Clancy”;
警报(选定);
$('#nap4').removeAttr('disabled');
$('#nap4').empty();
$('#nap4')。追加($(“-select-”);
$.ajax({
键入:“获取”,
url:'getbiketype.php',
数据:{name:selected},
成功:功能(数据){
控制台日志(数据);
$('#nap4')。追加(数据);
}
});
});

按照我在下面为您编写的内容更改您的代码

代码

$(riderSelected).on('change', function (event) {
    var selected = this.value;
    alert(selected);
    $('#nap4').removeAttr('disabled');
    $('#nap4').empty();
    $('#nap4').append($("<option>-select-</option>"));

    $.ajax({
        type: "GET",
        url: 'getbiketype.php',
        data: {name: selected},
        success: function (data) {
            console.log(data);
            $('#nap4').append(data);
        }
    });

});
$(已选)。on('change',函数(事件){
所选var=此值;
警报(选定);
$('#nap4').removeAttr('disabled');
$('#nap4').empty();
$('#nap4')。追加($(“-select-”);
$.ajax({
键入:“获取”,
url:'getbiketype.php',
数据:{name:selected},
成功:功能(数据){
控制台日志(数据);
$('#nap4')。追加(数据);
}
});
});
基于magicsuggest文档,您可能可以这样做

var selected = this.getValue()[0];

如果不允许多选

请尝试警报(所选类型);看看这两种情况下你都得到了什么。没有选择改变。您必须使用.on('change','..)并且没有this.getValue();这就是价值;那么您的jquery选择器是错误的(如果您的元素没有存储在变量中),您能为我们提供完整的html/javascript代码吗?我为变量获取对象,但为硬编码的情况获取字符串-听起来像问题!如何转换?根据magicsuggest
getValue
返回数组的文档,带有一个字符串元素的数组的警报看起来与字符串相同。。。但事实并非如此——这就是为什么alert是最糟糕的调试工具的原因之一,也是为什么console.log和family是调试javascript的更好方法(这就是console的用途)我使用getValue()就像我使用一个名为magicsuggest的javascript插件来执行自动完成一样,所以需要使用该函数来获取返回的选定值。我的想法是,当调用AJAX时,getValue()函数可能仍在运行,因此“selected”变量为空?