Что делает Json onLoad и как я могу вернуть что-то через звонок? - PullRequest
0 голосов
/ 04 июля 2011
function JsonCall() {
    JsonClient.setRequestHeader("Content-type", "application/json");
    JsonClient.send(Data);     
    JsonClient.onload = function() {    
      SomeOtherFunction(this.responseText);      
    }           
}

// This function is in someother class.

    var Object = {
        SomeOtherFunction: function() {
         return data;
        }
   }
  1. Что вернет моя функция JsonCall?
  2. Могу ли я сделать что-нибудь, где я могу вернуть значение из вызова onLoad Json Object?

Я хочу сделать некоторую логику в моем другом классе и вернуть значение через эту функцию JsonCall

Ответы [ 2 ]

1 голос
/ 04 июля 2011

выглядит странно для меня.Объект JsonClient здесь должен быть объектом XHR.Однако объект XHR предлагает событие onreadystatechange для обработки полной передачи путем проверки атрибута readyState.

Единственным исключением является объект XDomainRequest из Internet Explorer.Этот объект действительно обладает свойством .onload.Прямо сейчас ваши JsonCall() методы возвращают undefined.Вам нужно добавить callback method для выполнения.Например,

function JsonCall( SomeOtherFunction ) {
    JsonClient.setRequestHeader("Content-type", "application/json");
    JsonClient.send(Data);     
    JsonClient.onload = function() {    
      SomeOtherFunction(this.responseText);      
    }           
}

, а затем назвать его как

JsonCall( Object.SomeOtherFunction );

, где, я надеюсь, Object - это просто пример слова.

1 голос
/ 04 июля 2011

Что делает Json onLoad

Вы назначаете ему функцию.Он запускает функцию, когда приходит HTTP-ответ.

и как я могу вернуть что-либо через вызов?

Вы не можете.Это управляемое событиями программирование.Когда происходит событие, вы можете сделать что-то в ответ.Вы не можете приостановить выполнение кода, пока событие не произойдет, а затем продолжить.

Все, что вам нужно сделать с данными, вы должны сделать это в функции обратного вызова, которую вы назначаете onLoad.Вы не можете передать его обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...