Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Видимость еременных. Объявление и присваивание. (https://javascript.ru/forum/jquery/11190-vidimost-eremennykh-obyavlenie-i-prisvaivanie.html)

DonLino 12.08.2010 10:32

Видимость еременных. Объявление и присваивание.
 
Есть обращение к веб-сервису, тот в свою очередь возвращает значение. Так вот, есть функция, которая выполняется после успешного обращения к сервису и принимает значение msg.d. В этой функции делаю a = msg.d, переменния а объявленна в начале скрипта как var a;.
Когда вызываю внутри данной функции alert(a); выводится значение переменной а, если же за пределами функции, то undefined... Как присвоить значение переменной msg.d переменной а, что бы значение в переменной а было доступно в теле скрипта, а не в пределах одной функции??
собственно код:
var a;
var b;
// Обращение к веб-сервису
function ExecuteService(params, url, callbackSuccess) {  
    $.ajax({
        type: "POST",
        url: url,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: params,
        success: callbackSuccess,
        error: function callbackError(XMLHttpRequest, textStatus, errorThrown) {
            alert('Error!! XMLHttpRequest- ' + XMLHttpRequest + "; textStatus- " + textStatus + "; errorThrown- " + errorThrown);
        }
    });
}
// получаем общее колличество записей
function NumbOfRecs(msg) {  
    a = msg.d;
}

$(document).ready(function () {
    // Обращениея к веб-сервису
    ExecuteService("{}", "ListViewWebService.asmx/GetNumOfRecords", NumbOfRecs);
    b = a;
    alert(b);
});

Sweet 12.08.2010 10:54

Проблема не в видимости
var a
function changeA(){
  a='tra-la-la'
}
changeA()
alert(a)

DonLino 12.08.2010 11:00

А в чем же тогда может быть проблема?

Sweet 12.08.2010 11:03

А, типа, так работает?
function NumbOfRecs(msg) {   
  a = msg.d; 
  alert(a);
}

DonLino 12.08.2010 11:08

Да, так работает. А вот если даже так:
function NumbOfRecs(msg) {  
a = msg.d;
b = a - 1;

}
alert(a + " - " + b);

то выдает undefined - undefined

Sweet 12.08.2010 11:17

Я бы дал совет научиться самому решать свои проблемы - это очень полезный скил:) Реально добавляет ума в голову:)

По теме, попробуй добавить () сюда:
success: callbackSuccess()

DonLino 12.08.2010 11:31

Цитата:

Сообщение от Sweet (Сообщение 67125)
Я бы дал совет научиться самому решать свои проблемы - это очень полезный скил:) Реально добавляет ума в голову:)

По теме, попробуй добавить () сюда:
success: callbackSuccess()

согласен, но 3й день мучаюсь.. :blink:
а по поводу success: callbackSuccess(), можно немного подробнее?

exec 12.08.2010 12:07

DonLino, просто функция выполнится сразу при открытии страницы, а когда наступит событие success, выкинет TypeError.

inGray 12.08.2010 12:43

Внимательно перечитал.

DonLino 12.08.2010 12:44

Спасибо, проблема решена. В первом посте после 6й строчки добавлением строки async: false.


Часовой пояс GMT +3, время: 03:48.