gpt4 book ai didi

javascript - 如何防止 (jquery) ajax 调用中存在许多嵌套函数?

转载 作者:行者123 更新时间:2023-11-28 01:40:36 26 4
gpt4 key购买 nike

我正在开发一个网页,该网页通过(jquery)ajax 调用检索一些数据库信息,然后操作数据并通过各种 JavaScript 函数将其显示在页面上。我使用模块模式(下面的代码示例中的“userapp”)来避免全局变量并通过各种函数使用数据。

下面的简化代码可以工作,但前提是我在 ajax 调用中包含所有函数(例如下面代码中的 test() ),并且我认为这将导致丑陋的复杂代码(也符合一些最佳方法)我在网上读到的 javascript 实践)。当我尝试在 ajax 调用(嵌入 init() 中)之外/之后调用示例函数 test() 时,test() 不起作用,因为我认为 ajax 调用尚未完成设置变量('products[]' in示例)还没有。

我的问题:是否可以在ajax调用之外调用其他函数,如果可以,如何调用?我查看了回调示例,但我不确定这是否/如何解决我的问题......

简化代码:

userapp = function(){
//userapp properties
var today = new Date();
var products = [];

var copyItems = function(source_items, target_items){
//do something
};//var copyItems

var init = function(){
$.ajax({
url: "user_admin_get.php",
data: { command: "getuserbaseinfo", val1: "", val2: "" },
success: function (msg) {
copyItems(msg.eproducts,products); //set values for 'products' used by test()

test(); //calling test() here works as the the values has been set()
},//success: function(msg)
error: function(msg) {
console.log('error result from php file:');
},//error:
dataType: "json"
});//$.ajax({

};//var init = function(){

var test = function(){
//do something
};//test()

return{init:init, test:test} //return (only) public functions and vars
}(); //userapp()

//main function document ready
$(document).ready(function(){

userapp.init();
//userapp.test(); //test() is not working here as init() has not set the requirement parameters tey


}); //$(document).ready

最佳答案

您想要将回调传递给 init 并在该回调中调用 test

var init = function(callback){
$.ajax({
....
success: function (msg) {
....
callback();
}
...
};

...

userapp.init(function() {
// user app is ready!
userapp.test();
});

关于javascript - 如何防止 (jquery) ajax 调用中存在许多嵌套函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967636/

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