標題是一個猜測,什麼是我的腳本錯誤會:全局範圍的問題,返回值和ajax?
這是我global.js
腳本:
alert(search.getLabelsNames(); //alerts as undefined.
$('#search').autocomplete({
source: function(request) {
search.getLabelsNames();
},
minLength:1
});
這是我functions.js
腳本:
var search;
window.search = {
getLabelsNames:function(search) {
$.ajax({
url : '../db_scripts/get_labels_names.php',
type: "POST",
data: { id: search }, //this defaults to nothing. not a problem
success : function(data) {
var dataObj = jQuery.parseJSON(data);
$.each(dataObj, function() {
alert(this.name);
return this.name;
})
}
});
}
}
在每個函數this.name
都會從數據庫中正確返回每個標籤名稱。但是當我從globals.js
調用它時,它將返回爲undefined
。如果我返回數字1,search.getLabelsNames()
警報1 ..所以找到全局函數沒有問題。
這個腳本有什麼問題,爲什麼不能global.js
找到正在返回的this.name
?
它的工作!你的第二個編輯工作!非常感謝你的解答和解釋。現在我必須閱讀'$ .map'是什麼。 – Phil
@菲爾:不客氣:)基本上'映射'是循環一組項目並提取某些數據的另一種方式。你可以用'for'循環做同樣的事情,並在數組中添加每個'obj.name'。但是,是的,閱讀它:) –
但只是爲了確保'callback(data)'是什麼是「返回」到'autocomplete()'函數?所以在將來,我想要做的是格式化數據並將其傳遞給每次回調?我想我明白了 – Phil