
06.05.2013, 21:00
|
 |
Новичок на форуме
|
|
Регистрация: 06.05.2013
Сообщений: 9
|
|
Возврат результат из функции
На вход процедуры подаю ширину и долготу, но не могу понять как вернуть результат этот функции в основной блок программы, пробовала в блоке условия return, но ничего не выводится, как мне возвратить результат из функции?
<javascript>
function codeLatLng(a,b) {
var ansv;
$( function() {
var data = { lat:a, format:"json", lon:b };
$.get( "http://open.mapquestapi.com/nominatim/v1/reverse.php", data, success, "json" );
function success( geocodData ) {
var geo=geocodData.display_name;
if (geo != undefined) {
ansv = geo;
}
}
} );
}</javascript>
|
|

07.05.2013, 07:41
|
 |
Аспирант
|
|
Регистрация: 23.06.2011
Сообщений: 44
|
|
function codeLatLng(a, b, callback){
var data = {
lat : a,
format : "json",
lon : b
};
$.get(
"http://open.mapquestapi.com/nominatim/v1/reverse.php",
data,
function(data, textStatus, jqXHR){
if(data.hasOwnProperty('display_name')){
if(typeof(callback) == 'function'){
callback(false, data.display_name);
}
}else{
callback(new Error("No results found"));
}
},
"json"
);
}
// Юзаем
codeLatLng( // С верными значениями
'58',
'88',
function(err, geo){
if(err) throw err;
console.log(geo); // Тегульдетский район, Томская область, Siberian Federal District, Российская Федерация
}
)
codeLatLng( // С неверными значениями
'-1',
'0',
function(err, geo){
if(err) throw err; // Uncaught Error: No results found
console.log(geo);
}
)
Еще почитайте учебник, что ли.
http://javascript.ru/basic/closure#o...hennoy-funkcii
|
|

07.05.2013, 17:29
|
 |
Новичок на форуме
|
|
Регистрация: 06.05.2013
Сообщений: 9
|
|
Сообщение от tropiko
|
function codeLatLng(a, b, callback){
var data = {
lat : a,
format : "json",
lon : b
};
$.get(
"http://open.mapquestapi.com/nominatim/v1/reverse.php",
data,
function(data, textStatus, jqXHR){
if(data.hasOwnProperty('display_name')){
if(typeof(callback) == 'function'){
callback(false, data.display_name);
}
}else{
callback(new Error("No results found"));
}
},
"json"
);
}
// Юзаем
codeLatLng( // С верными значениями
'58',
'88',
function(err, geo){
if(err) throw err;
console.log(geo); // Тегульдетский район, Томская область, Siberian Federal District, Российская Федерация
}
)
codeLatLng( // С неверными значениями
'-1',
'0',
function(err, geo){
if(err) throw err; // Uncaught Error: No results found
console.log(geo);
}
)
Еще почитайте учебник, что ли.
http://javascript.ru/basic/closure#o...hennoy-funkcii
|
А у меня возникает ошибка - Uncaught ReferenceError: $ is not defined
что с этим делать? почему ему не нравится доллар
|
|

07.05.2013, 18:29
|
 |
Аспирант
|
|
Регистрация: 23.06.2011
Сообщений: 44
|
|
Сообщение от I'm_Lazy
|
А у меня возникает ошибка - Uncaught ReferenceError: $ is not defined
что с этим делать? почему ему не нравится доллар
|
Если с этим у вас проблемы, то стоит начать изучение JavaScript с азов.
У вас два пути:
загуглить текст ошибки;
забить на программирование на JS и стать музыкантом, например.
|
|

10.05.2013, 11:11
|
 |
Новичок на форуме
|
|
Регистрация: 06.05.2013
Сообщений: 9
|
|
Сообщение от tropiko
|
Если с этим у вас проблемы, то стоит начать изучение JavaScript с азов.
У вас два пути:
загуглить текст ошибки;
забить на программирование на JS и стать музыкантом, например.
|
Спасибо за советы, tropiko. Но музыкантом мне не стать, а бросать программирование я подумаю над этим, от таких советов рушатся судьбы людей. А на счет вашего варианта вывода результата запроса, все работает, за что Вам огромное спасибо, однако с таким же успехом я могла вывести просто в текстовое поле, как делала это раньше и я по прежнему не могу использовать полученные результат в других функциях. Как я поняла, его можно сразу только выводить, а вот сохранить его допустим в массиве для дальнейших сравнений не получается.
|
|

10.05.2013, 13:00
|
 |
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от I'm_Lazy
|
На вход процедуры подаю ширину и долготу, но не могу понять как вернуть результат этот функции в основной блок программы, пробовала в блоке условия return, но ничего не выводится, как мне возвратить результат из функции?
|
Вы никак не вернете результат-потому что имеете дело с асинхронной функцией AJAX
callback функции-у Вас это sucess не могут ничего возвращать
Выход один запускайте нужную Вам функцию из success
|
|
|
|