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);
输出
但是当我使用console.log(this.getParser);
时,它会显示未定义的
这是控制台日志输出
我做错了什么?
答案 0 :(得分:3)
我认为你正在寻找括号内的符号:
$(toElement).append($("<option>").attr('value', this[getParser]).text(this[getParser]));
// -------------------------------------------------^---------^-----------^---------^
在JavaScript中,您可以通过以下两种方式之一访问属性:
使用文字(“点”)语法,foo.bar
和
使用字符串(“括号”)语法,foo["bar"]
在第二种情况下,字符串可以是任何表达式的结果,包括变量查找。因此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 ));
});