Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Глобальная переменная в запросе ajax+json!вне запроса! / 25 сообщений из 33, страница 1 из 2
06.07.2013, 22:59
    #38323018
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Здравствуйте! Не могу вынести переменную за запрос! вот запрос

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 
var getlat;
var getlng;
var getzoom;

$.ajax({
        type: 'POST',
        cache: false,
        url: 'getdata.php',
        dataType: 'json',
		data: 'glob=1',
		traditional: true,
        success: function(data1) {
          getlat = data1.lat;
		  getlng = data1.lng;
		  getzoom = data1.zoom;
        }
    }); 



хочу вставить результаты

Код: javascript
1.
2.
3.
4.
5.
6.
var centerCoord = new google.maps.LatLng( getlat, getlng); 
    var mapOptions = {
        zoom:  getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };




ничего не получается когда вызываю переменную в SUCCESS то работает а вот после закрытия }
});
если прописать alert(getlat); не работает! как можно сделать переменную глобальной?
...
Рейтинг: 0 / 0
07.07.2013, 00:07
    #38323050
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Нет, все нормально, ты что-то путаешь, переменные явно не приватные. Возможно, если покажешь больше кода для представления о видимости переменных, что-то поменяется. Но поэтому коду все пучком.
...
Рейтинг: 0 / 0
07.07.2013, 00:43
    #38323060
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
IDVsbruck,

Нет, думаю не пучком )). Автор хочет использовать переменную не после вызова success, а именно физически прописать использование переменной после кода функции.

Автору:
Есть 3 варианта обращения к принятой переменной:
1. Внутри функции success, тогда вы получаете гарантию, что код будет отработан после получения переменной
2. Сделать синхронный запрос вместо асинхронного.
3. Дождаться получения переменной (спомощью таймера например. Но смысла в этом нету, лучше тогда success)
...
Рейтинг: 0 / 0
07.07.2013, 02:16
    #38323084
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Кто-то из нас слепой ... Переменные объявлены глобально (и имеют значения undеfined). После запроса в обработчике success переопределяет их. В чем проблема их использования? Допускаю, что они не глобальные, а определены внутри функции. Допускаю, что не вызывается success, а, скажем, error, тогда они не переопределяются. Допускаю, что происходит сбой и не доходит до их переопределения. Поэтому рекомендую опубликовать код со структурой, чтобы можно было разобраться. Представленного кода явно мало.
...
Рейтинг: 0 / 0
07.07.2013, 07:55
    #38323104
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
IDVsbruckКто-то из нас слепой ... Переменные объявлены глобально (и имеют значения undеfined). После запроса в обработчике success переопределяет их. В чем проблема их использования? Допускаю, что они не глобальные, а определены внутри функции. Допускаю, что не вызывается success, а, скажем, error, тогда они не переопределяются. Допускаю, что происходит сбой и не доходит до их переопределения. Поэтому рекомендую опубликовать код со структурой, чтобы можно было разобраться. Представленного кода явно мало.

Вы меня наверное неверно поняли... Что я хотел сказать, так это то, что автор нарушает последовательность действий (других причин не вижу). То есть при выполнении скрипта происходит что-то подобное:
1. Определить обработчик ответа сервера (success)
2. Отправить запрос
3. Попробовать использовать переменную, которая переопределяется в обработчике ответа (и получить undefined например)
4. Получить ответ сервера и вызвать обработчик переопределяющий переменные.

То есть автор вынося использование переменных за обработчик меняет последовательность действий на неправильный.

Хотя согласен, лучше если автор предоставит весь код касающийся данной ситуации, так как сейчас он получает только самые вероятные догадки. А с кодом можно получить чёткий ответ.
...
Рейтинг: 0 / 0
07.07.2013, 09:39
    #38323114
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Здравствуйте, спасибо за обсуждение! Вот собственно код!



index.php

Код: html
1.
<div id='map' style="height:577px;border:1px solid #ccc;margin-top:0px;"></div>





fom.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
var map;
var image = 'min_marker.png';
var image2 = 'marker.png';
var gmarkers = [];


var getlat;
var getlng;
var getzoom;




var infowindow = new google.maps.InfoWindow();  
function mapInit(){
	


 $.ajax({
        type: 'POST',
        cache: false,
        url: 'getdata.php',
        dataType: 'json',
		data: 'glob=1',
		traditional: true,
        success: function(data1) {
          getlat = data1.lat;
		  getlng = data1.lng;
		  getzoom = data1.zoom;
// прописываю тут alert(getlat); получаю данные которые я хотел!
        }
    }); 

// прописываю тут alert(getlat); то получаю undefined!

// надо чтобы данный попадали вот сюда в установки гугл мапа!
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom:  getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map"), mapOptions);
	



}






$(document).ready(function(){
    mapInit();
});




getdata.php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?
include 'inc/connect.php';
if(isset($_POST['glob'])){
$return_arr = array();
$sql = "SELECT * FROM `settings`";	
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$return_arr = array("lat" => $row["lat"], "lng" => $row["lng"], "zoom" => $row["zoom"],);  
echo json_encode($return_arr);  
}

?>
...
Рейтинг: 0 / 0
07.07.2013, 10:10
    #38323120
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
glob_js,

всё понятно... перечитайте мои ответы... они верны :)... Думаю более подробное объяснение не потребуется.
...
Рейтинг: 0 / 0
07.07.2013, 10:18
    #38323121
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Програмёрglob_js,

всё понятно... перечитайте мои ответы... они верны :)... Думаю более подробное объяснение не потребуется.


Извините но я многое перепробывал вообще не могу врубиться! в sucess же я получаю переменную которую я хочу! и заношу её в глобальную! а вы нести за рамки не могу! я даже уже не знаю что и как переделать! вся последовательность действий правильная как видите получаю дынные! заношу данные! но за пределы просто не хочет выносить! Напишите пожалуйста пример как можно это сделать! Да понимаю нагло вас об этом просить но просто время поджимает ! а я уже не знаю что тут ещё можно вправить! весь код вы видите сами!
...
Рейтинг: 0 / 0
07.07.2013, 10:28
    #38323123
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
меня всё равно интерисует тот вариант но вот решил сделать так!


$.ajax({
type: 'POST',
cache: false,
url: 'getdata.php',
dataType: 'json',
data: 'glob=1',
traditional: true,
success: function(data1) {
getlat = data1.lat;
getlng = data1.lng;
getzoom = data1.zoom;

var centerCoord = new google.maps.LatLng(getlat, getlng);
var mapOptions = {
zoom: 7,
center: centerCoord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);


}
});



попали коориднаты и заработало но проблема возникла теперь с zoom: 7, когда пытаюсь вписать zoom: getzoom, то скрипт не срабатывает! карта не появляется! там нудно как то специфически вызвать эту переменную или как?
...
Рейтинг: 0 / 0
07.07.2013, 10:33
    #38323124
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
СНОВА ИЗВИНЯЮСЬ ПОСЛЕДНЕЕ СООБЩЕНИЕ НЕ НУЖНОЕ ДРУГИЕ ФУНКЦИИ ПОТОМ ИЗ ЗА ТАКОВО ВИДА ПРОПИСИ ДАННЫХ НЕ СРАБОТАЛИ! ВЕРНУЛСЯ К ТОМУ ЖЕ КОДУ!
...
Рейтинг: 0 / 0
07.07.2013, 10:35
    #38323125
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
Програмёр правильно написал, ну, почти что.
Сюксес у Вас вызывается асинхронно, поэтому присваивание в нём глобальной переменной - не прокатит. Программа-то выполняется синхронно - степ бай степ. Поэтому обрабатывайте её значение внутри сюксеса, или оттулова вызывайте свою функцию обработки результата запроса. Судя по коду, присваивание происходит, когда результатом аякс-запроса и не пахнет.
...
Рейтинг: 0 / 0
07.07.2013, 10:35
    #38323126
мимо ходом
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
у вас ajax асинхронный . дефолт == true
...
Рейтинг: 0 / 0
07.07.2013, 10:42
    #38323127
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
только хотел отписать!
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 $.ajax({
        type: 'POST',
        cache: false,
        url: 'getdata.php',
        dataType: 'json',
		data: 'glob=1',
		traditional: true,
        success: function(data1) {
          getlat = data1.lat;
		  getlng = data1.lng;
		  getzoom = data1.zoom; 
        },
		async: false
    });



добавил строку async: false заработало! НО!!! конечно же без подлянки не бывает хочу внести данные
в zoom: getzoom , но ничего программа стоит! просто вызываю алертом! всё показывает значени! но когда хочу занести вот сюда

Код: javascript
1.
2.
3.
4.
5.
var mapOptions = {
        zoom: getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };



то ничего не получается ! может проблема в том что в var mapOptions внутри ещё появляется пердопределённый var getzoom? не хочет принимать переменную !
...
Рейтинг: 0 / 0
07.07.2013, 10:50
    #38323128
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
P.S. проверил одну штуку

если прописать просто вот так от руки



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var gett = 7;
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom: gett,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };



то работает! нужно ли тогда как то обработать чтоли getzoom???? а то эту переменную берёт а вот getzoom не хочут! хотя значение там такое же - 7!
...
Рейтинг: 0 / 0
07.07.2013, 10:57
    #38323130
мимо ходом
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
авторно просто время поджимает
авторэту переменную берёт а вот getzoom не хочут
смени имя и не парься )
...
Рейтинг: 0 / 0
07.07.2013, 11:00
    #38323132
мимо ходом
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
зы: предыдущий пост в том случае если так не работает
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var getzoom = 7;
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom: getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
...
Рейтинг: 0 / 0
07.07.2013, 11:00
    #38323133
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
мимо ходомавторно просто время поджимает
авторэту переменную берёт а вот getzoom не хочет
смени имя и не парься )


Вы про что? ну если про имя переменной то менял даже вот так сделал как то тупо


var gett = getzoom;

и

Код: javascript
1.
2.
3.
4.
5.
 var mapOptions = {
        zoom: gett,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };



и никакого эффекта!
...
Рейтинг: 0 / 0
07.07.2013, 11:02
    #38323134
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
мимо ходомзы: предыдущий пост в том случае если так не работает
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var getzoom = 7;
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom: getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };




Так как вы написали это ручной ввод! А мне нужно чтобы через переменную! т.к. значение zoom меняется с админ панеля оно не всегда 7 будет :)
...
Рейтинг: 0 / 0
07.07.2013, 11:06
    #38323135
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
ShSergeПрограмёр правильно написал, ну, почти что.
Сюксес у Вас вызывается асинхронно, поэтому присваивание в нём глобальной переменной - не прокатит. Программа-то выполняется синхронно - степ бай степ. Поэтому обрабатывайте её значение внутри сюксеса, или оттулова вызывайте свою функцию обработки результата запроса. Судя по коду, присваивание происходит, когда результатом аякс-запроса и не пахнет.

а почему почти?
по-моему Вы сейчас повторили то же, что и я, только сформулировали иначе
...
Рейтинг: 0 / 0
07.07.2013, 11:09
    #38323136
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
ПрограмёрShSergeПрограмёр правильно написал, ну, почти что.
Сюксес у Вас вызывается асинхронно, поэтому присваивание в нём глобальной переменной - не прокатит. Программа-то выполняется синхронно - степ бай степ. Поэтому обрабатывайте её значение внутри сюксеса, или оттулова вызывайте свою функцию обработки результата запроса. Судя по коду, присваивание происходит, когда результатом аякс-запроса и не пахнет.

а почему почти?
по-моему Вы сейчас повторили то же, что и я, только сформулировали иначе


Ну да) Вот только помоги докопаться до проблемы с переменной getzoom почему она не хочет срабатывать в том месте! а объявляя другую переменную и вручную вводить значение то эту переменную берёт!) как то отформатировать надо её или что?
...
Рейтинг: 0 / 0
07.07.2013, 11:14
    #38323137
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
glob_js,

А что, если попробовать написать alert(getzoom); внутри success и за его пределами?

1. Значения одинаковые undefined - Вы не получили значение с сервера (смотреть есть ли этот атрибут в принимаемом объекте.
2. Значения разные (в success то что надо, за пределами undefined) - очень мало вероятно... Если так - надо видеть больше кода :)
3. Значения одинаковые не undefined - Вы явно где-то опечатались (если вы показали цельный участок кода и ничего не вырезали из середины).
...
Рейтинг: 0 / 0
07.07.2013, 11:16
    #38323138
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
glob_js...вручную вводить значение то эту переменную берёт!)...
Дык, ясен перец. Кстати, если Вы бы поставили в своём первоначальном коде не один алерт, а два - на втором арерте у Вас тоже бы всё сработало.
Вопрос: почему?
...
Рейтинг: 0 / 0
07.07.2013, 11:21
    #38323139
glob_js
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
и внутри и вне запроса alert(getzoom); выводит значение! прямо даже если перед

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
alert(getzoom);
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom: getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };



вот выскакивает окошко со значением! а вот внизу когда значение хочу установить уже!!!! то всё ничего не срабатывает! zoom: getzoom, видимо не получает значение а алерт показывает что оно есть! странное какое то дело!

и да ShSerge интересен ответ на вопрос твой)))) ПОчему?!)
...
Рейтинг: 0 / 0
07.07.2013, 11:26
    #38323141
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
glob_jsи внутри и вне запроса alert(getzoom); выводит значение! прямо даже если перед

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
alert(getzoom);
	
    var centerCoord = new google.maps.LatLng(getlat, getlng); 
    var mapOptions = {
        zoom: getzoom,
        center: centerCoord,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };



вот выскакивает окошко со значением! а вот внизу когда значение хочу установить уже!!!! то всё ничего не срабатывает! zoom: getzoom, видимо не получает значение а алерт показывает что оно есть! странное какое то дело!

и да ShSerge интересен ответ на вопрос твой)))) ПОчему?!)

Ответ на вопрос "почему?" очевиден... пока бы Вы сообразили что alert выскочил, пока бы навели мышку что бы его закрыть, пока бы клацнули и тд.... сервер бы уже давно ответил на запрос, браузер бы его принял и только ждал бы продолжения выполнения кода :).

Но вот как это связано со вторым вопросом (про getzoom) мне не понятно... если можно, ShSerge, поясните:)

glob_js, уверены, что значение, которое показывает alert допустимо для записи в mapOptions.zoom? Там точно число... и точно из допустимого диапазона?
...
Рейтинг: 0 / 0
07.07.2013, 11:26
    #38323142
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная переменная в запросе ajax+json!вне запроса!
glob_js...и да ShSerge интересен ответ на вопрос твой)))) ПОчему?!)
Подумайте.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Глобальная переменная в запросе ajax+json!вне запроса! / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]