Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2010, 10:32
Интересующийся
Отправить личное сообщение для DonLino Посмотреть профиль Найти все сообщения от DonLino
 
Регистрация: 13.07.2010
Сообщений: 15

Видимость еременных. Объявление и присваивание.
Есть обращение к веб-сервису, тот в свою очередь возвращает значение. Так вот, есть функция, которая выполняется после успешного обращения к сервису и принимает значение 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);
});
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2010, 10:54
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Проблема не в видимости
var a
function changeA(){
  a='tra-la-la'
}
changeA()
alert(a)
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2010, 11:00
Интересующийся
Отправить личное сообщение для DonLino Посмотреть профиль Найти все сообщения от DonLino
 
Регистрация: 13.07.2010
Сообщений: 15

А в чем же тогда может быть проблема?
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2010, 11:03
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

А, типа, так работает?
function NumbOfRecs(msg) {   
  a = msg.d; 
  alert(a);
}
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2010, 11:08
Интересующийся
Отправить личное сообщение для DonLino Посмотреть профиль Найти все сообщения от DonLino
 
Регистрация: 13.07.2010
Сообщений: 15

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

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

то выдает undefined - undefined

Последний раз редактировалось DonLino, 12.08.2010 в 11:21.
Ответить с цитированием
  #6 (permalink)  
Старый 12.08.2010, 11:17
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

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

По теме, попробуй добавить () сюда:
success: callbackSuccess()
Ответить с цитированием
  #7 (permalink)  
Старый 12.08.2010, 11:31
Интересующийся
Отправить личное сообщение для DonLino Посмотреть профиль Найти все сообщения от DonLino
 
Регистрация: 13.07.2010
Сообщений: 15

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

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

Последний раз редактировалось DonLino, 12.08.2010 в 12:01.
Ответить с цитированием
  #8 (permalink)  
Старый 12.08.2010, 12:07
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

DonLino, просто функция выполнится сразу при открытии страницы, а когда наступит событие success, выкинет TypeError.
Ответить с цитированием
  #9 (permalink)  
Старый 12.08.2010, 12:43
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

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

Последний раз редактировалось inGray, 12.08.2010 в 12:44. Причина: Собственая глупость
Ответить с цитированием
  #10 (permalink)  
Старый 12.08.2010, 12:44
Интересующийся
Отправить личное сообщение для DonLino Посмотреть профиль Найти все сообщения от DonLino
 
Регистрация: 13.07.2010
Сообщений: 15

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск