gpt4 book ai didi

javascript - 如何将 $.ajax 对象传递给另一个函数?

转载 作者:行者123 更新时间:2023-11-30 23:48:45 24 4
gpt4 key购买 nike

这个函数将在一般的ajax调用中使用:

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 block 中导致错误的情况,但我将其保留在其中,因为您一开始就将其放在那里。

更新

进一步说明这一点:

function get_ajax(){
var ran = false;
$.ajax({ 'url':'/some/url', success: function(data){
ran = true;
});
return ran;
}

alert(get_ajax()); // alerts "false"

它按以下顺序运行:

  1. run设置为false
  2. 启动 AJAX 请求
  3. 返回运行
  4. AJAX 完成,将 run 设置为 true

但是,如果您使用回调,则可以保持事物有序,以便它们像这样执行:

  1. 启动 AJAX 请求
  2. AJAX完成,执行回调并返回数据

关于javascript - 如何将 $.ajax 对象传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com