获取未定义的值使用每个jquery

时间:2014-01-12 15:12:49

标签: javascript jquery html json

var returnResponse = function (click, toElement, getParser) {
$("body").on('change', click, function (event) {    
        $(toElement).empty();
        removeExistingDataFull();    
        $.ajax({    
            url: "../Controller/jsonParser.php",
            type: "GET",
            data: getParser + '=' + $(click).val(),
            dataType: 'JSON',
            success: function (response) {    
                $(response).each(function () {
                    console.log(this.getParser);
                    $(toElement).append($("<option>").attr('value', this.getParser).text(this.getParser));    
                });
            }
        });
    });
};


returnResponse('#CouserFinder', '#RegType', 'CT_Course_Code');

这是the console.log(this);输出

enter image description here

但是当我使用console.log(this.getParser);时,它会显示未定义的

这是控制台日志输出 enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我认为你正在寻找括号内的符号:

$(toElement).append($("<option>").attr('value', this[getParser]).text(this[getParser]));
// -------------------------------------------------^---------^-----------^---------^

在JavaScript中,您可以通过以下两种方式之一访问属性:

  1. 使用文字(“点”)语法,foo.bar

  2. 使用字符串(“括号”)语法,foo["bar"]

  3. 在第二种情况下,字符串可以是任何表达式的结果,包括变量查找。因此this[getParser]将查找getParser中字符串命名的任何属性。如果getParser"CT_Course_Code",则this[getParser]会在CT_Course_Code上查找this


    附注:您的代码正在查找CT_Course_Code属性,但您的屏幕截图显示response数组中的对象 <{em>} CT_Course_Code属性。但他们确实有CT_Type_Code。假设response 一个数组,很难说你没有向我们展示返回的实际JSON。

答案 1 :(得分:0)

你能试试吗,

  $.each(response, function( index, value ) {
         console.log( index + ": " + value );
         $(toElement).append($("<option>").attr('value', value ).text(value ));

   });