Javascript 如何将$.ajax对象传递给另一个函数?
此函数将在一般ajax Cals中使用:Javascript 如何将$.ajax对象传递给另一个函数?,javascript,jquery,Javascript,Jquery,此函数将在一般ajax Cals中使用: function f_AjaxFunction(_param) { var objectWillReturn; $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson', data: "{_sP
function f_AjaxFunction(_param) {
var objectWillReturn;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson',
data: "{_sParam:'" + _param + "'}",
dataType: "json",
success: function(data) {
var txt = "";
try {
objectWillReturn = data;
}
catch (err) {
alert(err.description);
}
}
});
return objectWillReturn ;
}
此函数正在调用上面的另一个函数:
function f_HavaDurumu(_paramm) {
var obj;
obj = f_AjaxFunction(_paramm);
$("#spanShow").html(obj.d);
}
您必须使用回调,因为调用是非同步进行的:
function f_AjaxFunction(_param, callback) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson',
data: "{_sParam:'" + _param + "'}",
dataType: "json",
success: function(data) {
var txt = "";
try {
if($.isFunction( callback(data) )){
callback(data);
}
}
catch (err) {
alert(err.description);
}
}
});
}
function f_HavaDurumu(_paramm) {
f_AjaxFunction(_paramm, function(data){
$("#spanShow").html(data.d);
});
}
我想不出您的代码会在Try块中导致错误的情况,但我保留了它,因为您从那里开始
更新
为了进一步说明这一点:
function get_ajax(){
var ran = false;
$.ajax({ 'url':'/some/url', success: function(data){
ran = true;
});
return ran;
}
alert(get_ajax()); // alerts "false"
它按以下顺序运行:
run
设置为false
run
run
设置为true您必须使用回调,因为调用是非同步进行的:
function f_AjaxFunction(_param, callback) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson',
data: "{_sParam:'" + _param + "'}",
dataType: "json",
success: function(data) {
var txt = "";
try {
if($.isFunction( callback(data) )){
callback(data);
}
}
catch (err) {
alert(err.description);
}
}
});
}
function f_HavaDurumu(_paramm) {
f_AjaxFunction(_paramm, function(data){
$("#spanShow").html(data.d);
});
}
我想不出您的代码会在Try块中导致错误的情况,但我保留了它,因为您从那里开始
更新
为了进一步说明这一点:
function get_ajax(){
var ran = false;
$.ajax({ 'url':'/some/url', success: function(data){
ran = true;
});
return ran;
}
alert(get_ajax()); // alerts "false"
它按以下顺序运行:
run
设置为false
run
run
设置为true正如Doug所说,您将需要使用异步回调。f_ajax函数在数据可用之前返回
另一种选择是。正如Doug所说,您将需要使用异步回调。f_ajax函数在数据可用之前返回
另一种选择是。如何将返回对象设置为调用函数的新对象?我不能设置=>var newObj=f_AjaxFunction(“hihi”);否,函数在调用
$.ajax
后立即返回,因为调用是异步的,并且从当前执行队列中拉出。其余的调用必须在回调事件中处理,否则它将在AJAX调用返回之前执行。有意义吗?如何将返回对象设置为调用函数的新对象?我不能设置=>var newObj=f_AjaxFunction(“hihi”);否,函数在调用$.ajax
后立即返回,因为调用是异步的,并且从当前执行队列中拉出。其余的调用必须在回调事件中处理,否则它将在AJAX调用返回之前执行。有道理?