YUI3 - Почему обработчики событий не запускаются по запросу GET?

Я использую YUI3 для выполнения запроса GET, но обработчики событий не запускаются, когда я пытаюсь выполнить запрос GET. Комментарии должны регистрироваться в консоли в каждом из обработчиков событий. Вот мой код:

YUI({ filter: 'raw' }).use("io-xdr", "substitute", "json-parse", "node", function(Y) {

  var url = "http://localhost:8000/scripts/test.php";

  var output = Y.one("#container");  

  var cfg = {
    method: "GET",
    xdr: {
      use: 'native'
    },  
    on: {
      start: handleStart,
      success: handleSuccess,
      failure: handleFailure,
    }
  };

  var handleStart = function(id, a) {
    output.set("innerHTML", "YES");
    console.log("Inside of handleStart");
    Y.log("a");
  };

  var handleSuccess = function(id, o, a) {
    var results = Y.JSON.parse(o.responseText);
    console.log(results.count);
    console.log(results);
    Y.log("b");
  };

  var handleFailure = function(id, o, a) {
    console.log("Inside of handleFailure");
    Y.log("c");
  };

  var obj = Y.io(
    url, cfg
  );

});

В консоли нет ошибок. URL правильный.

1 ответ

Решение

Объявите ваши обработчики выше, где вы определяете cfg. JavaScript использует подъем, поэтому переменные будут технически "доступны", хотя и не определены в том месте, где вы пытаетесь их использовать.

Вы можете увидеть этот jsbin, показывающий работоспособность: http://jsbin.com/owemib/1/edit

Хотя с CORS это не работает, но, по крайней мере, регистрируется!

Другие вопросы по тегам