Строка setInterval должна выглядеть так: -
this.intervalID = setInterval(
(function(self) { //Self-executing func which takes 'this' as self
return function() { //Return a function in the context of 'self'
self.retrieve_rate(); //Thing you wanted to run as non-window 'this'
}
})(this),
this.INTERVAL //normal interval, 'this' scope not impacted here.
);
Изменить: тот же принцип применяется к «onload
». В этом случае его общий для «внешнего» кода делать мало, он просто устанавливает запрос, а затем отправляет его. В этом случае дополнительные накладные расходы дополнительные функции, как в приведенном выше коде, не нужны. Ваш retrieve_rate должен выглядеть следующим образом: -
retrieve_rate : function()
{
var self = this;
var ajax = new XMLHttpRequest();
ajax.open('GET', 'http://xyz.com', true);
ajax.onreadystatechanged= function()
{
if (ajax.readyState == 4 && ajax.status == 200)
{
// prefs available as self.prefs
}
}
ajax.send(null);
}
JSON не допускает реальных переносов строк. Вам нужно заменить все разрывы строк на \n
.
например:
"первая строка
вторая строка"
можно сохранить так:
"первая строка\n вторая строка"
Примечание:
для Python
это должно быть записано так:
"первая строка\n вторая строка"
где \\\
для экранирования обратной косой черты, иначе python будет рассматривать \n
как
управляющий символ "новая строка"