如何将$ .ajax对象传递给另一个函数?
问题描述:
,此功能将使用通用的AJAX CALSS:
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块中会导致错误的情况,但是我把它留在了因为你在那里首先。
UPDATE
为了进一步说明这一点:
function get_ajax(){
var ran = false;
$.ajax({ 'url':'/some/url', success: function(data){
ran = true;
});
return ran;
}
alert(get_ajax()); // alerts "false"
正是在这样的顺序运行:
- 设置
run
到false
- 开始AJAX请求
- 返回
run
- AJAX完成,设置
run
为true
但是,如果使用回调,你可以保留的东西,以便让他们执行这样的:
- 开始AJAX请求
- AJAX完成后,用返回数据执行回调
答
正如Doug所说,您会需要使用异步回调。在数据可用之前,f_AjaxFunction正在返回。
另一种选择是Javascript Strands。
+0
+1 Cool链接...从来没有看过股! – 2010-01-16 17:31:35
+1不知道'$ .isFunction'。 – 2010-01-16 17:05:37
如何将返回对象设置为新调用该函数的对象?我不能设置=> var newObj = f_AjaxFunction(“hihi”); – uzay95 2010-01-16 17:05:41
不,该函数在调用'$ .ajax'之后立即返回,因为调用是异步的并被从当前执行队列中取出。其余的调用必须在回调事件中处理,否则它将在AJAX调用返回之前执行*。合理? – 2010-01-16 17:09:00