Javascript 如何在JQuery中从函数中获取值
有人知道如何从包含getJSON的函数返回值吗 问题是我试图从另一个函数调用该函数以获得值 但它一直没有定义!!!! 我怎样才能让它工作Javascript 如何在JQuery中从函数中获取值,javascript,jquery,json,json.net,Javascript,Jquery,Json,Json.net,有人知道如何从包含getJSON的函数返回值吗 问题是我试图从另一个函数调用该函数以获得值 但它一直没有定义!!!! 我怎样才能让它工作 function TranslateLatLanToAddress(LatLng) { var latlng = "34.1574183,-118.437125"; var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat
function TranslateLatLanToAddress(LatLng) {
var latlng = "34.1574183,-118.437125";
var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$ = jQuery;
$.getJSON(url, function (data) {
for (var i = 0; i < data.results.length; i++) {
var address = data.results[i].formatted_address;
// var address = data.results[i].address_components[4].long_name + data.results[i].address_components[6].short_name;
//alert(address);
// alert(address);
return false;
}
});
}
function GetVal()
{
var retVal =TranslateLatLanToAddress(LatLng);
alert(retVal); //Its undefined!!!
}
函数translateLantLoadAddress(LatLng){
var latlng=“34.1574183,-118.437125”;
变量url=”http://maps.googleapis.com/maps/api/geocode/json?latlng=“+latlng+”&sensor=false”;
$=jQuery;
$.getJSON(url、函数(数据){
对于(var i=0;i
AJAX调用是异步的。这意味着,当请求被发送到服务器(谷歌地图)时,您的脚本将继续
这是一件好事,因为这意味着您的页面将在等待结果时继续加载
为了利用这一点,您可以使用回调
方法
function TranslateLatLanToAddress(LatLng, fnCallback) {
var latlng = "34.1574183,-118.437125";
var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$ = jQuery;
$.getJSON(url, function (data) { // getJSON is asynchronous
for (var i = 0; i < data.results.length; i++) {
var address = data.results[i].formatted_address; // get the result
fnCallback(address); // execute the callback from the parameters
}
});
}
function GetVal() {
TranslateLatLanToAddress(LatLng, function(address){ // note the new callback that takes an address as a parameter
alert(address); // the callback is fired from within the SUCCESS method and now address has a value
});
}
函数translateLantLoadAddress(LatLng,fnCallback){
var latlng=“34.1574183,-118.437125”;
变量url=”http://maps.googleapis.com/maps/api/geocode/json?latlng=“+latlng+”&sensor=false”;
$=jQuery;
$.getJSON(url,函数(数据){//getJSON是异步的
对于(var i=0;i
AJAX是异步的,您所做的是(伪):
因此,您可以在AJAX get回调中调用函数:
$.getJSON(url, function (data) {
// Other code here....
alert( "AJAX DONE" ); // Or like: // myCallbackFunction( data );
});
将所需的AJAX响应数据(如果需要)传递给
myCallbackFunction(数据)在任何情况下,fnmyCallbackFunction
只有在AJAX完成其工作后才会被调用。$。getJSON使用的是XMLHTTPRequest,因此它自然是一个异步函数。最好分配一个回调函数来执行某些操作
function TranslateLatLanToAddress(LatLng) {
var latlng = "34.1574183,-118.437125";
var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$ = jQuery;
$.getJSON( url, execute)
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
}
function execute(data) {
for (var i = 0; i < data.results.length; i++) {
console.log(data.results[i].formatted_address);
}
}
函数translateLantLoadAddress(LatLng){
var latlng=“34.1574183,-118.437125”;
变量url=”http://maps.googleapis.com/maps/api/geocode/json?latlng=“+latlng+”&sensor=false”;
$=jQuery;
$.getJSON(url,执行)
.done(函数(){
console.log(“第二次成功”);
})
.fail(函数(){
控制台日志(“错误”);
})
.always(函数(){
控制台日志(“完成”);
});
}
函数执行(数据){
对于(var i=0;i
另外,$.getJSON还有另一个方便的回调(完成、失败、始终),您可以使用一些函数(如success callback)覆盖。ajax
中的A
表示异步,这意味着ajax调用是非阻塞的;当他们将控制权传递给下一行时,他们在后台工作。这被认为是ajax101。因此,当您检查返回的值时,ajax请求尚未完成。您建议我做什么?这取决于您想做什么。你真的没有很多选择;根据ajax请求的结果,您必须执行的任何操作,都可以在ajax回调中执行。或者您也可以准备好jQuery承诺或延迟。
function TranslateLatLanToAddress(LatLng) {
var latlng = "34.1574183,-118.437125";
var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$ = jQuery;
$.getJSON( url, execute)
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
}
function execute(data) {
for (var i = 0; i < data.results.length; i++) {
console.log(data.results[i].formatted_address);
}
}