У меня есть следующий код:jQuery переменная scope? говорит, что не определено
function postToDrupal(contacts, source, owner) {
(function ($) {
var contact, name, email, entry;
emails = {};
for (var i = 0; i < contacts.length; i++) {
contact = contacts[i];
emails[i]['name'] = contact.fullName();
emails[i]['email'] = contact.selectedEmail();
}
$.post("/cloudsponge-post",emails,function(data) {
});
}(jQuery));
}
Я получаю следующее сообщение об ошибке, когда я пытаюсь запустить его:
WARN: Attempt to invoke callback [afterSubmitContacts] failed: TypeError: Cannot set property 'name' of undefined
Я не уверен, что проблема IS-я вполне новый для JS и нахожу это немного сложнее. Какая причина, по которой она сломана, и как мне ее исправить?
Ваши электронные письма в объекте, а не в массиве, поэтому электронные письма [i] не определены. Также вы забыли var перед ним. – Virus721
Я могу вспомнить, что был вынужден сделать = {} перед установкой свойств объектов, поэтому я предположил, что он одинаковый для массивов. – Virus721
Помните, если я спрашиваю, зачем использовать IIFE непосредственно внутри функции? Функция создает свою собственную область. Это связано с Drupal с использованием переменной '$'? – Jasper