gpt4 book ai didi

javascript - 从 ajax 返回值并将该值设置为变量

转载 作者:行者123 更新时间:2023-11-28 11:47:54 25 4
gpt4 key购买 nike

我在一个函数内有一个ajax调用,它在成功函数上返回一个json对象,我需要将返回的数据设置为一个变量,搜索答案但我找不到任何有用的答案。

方法一:
我调用一个函数并将返回值设置为这样的变量

var obj = ajaxCall();

我的代码就像

 function ajaxCall(){
var result;
$.ajax({
url: url_of_my_php_file,
dataType: 'json',
type: 'GET',
contentType: 'application/json',
success: function(data) {
// it returns json Object "data"
result = data;
}
});
return result;
}

如果我在成功回调中记录数据,我的 json 与此类似

[{ collection: "Super Hero", img:"http://img_url.jpg",
heros: [{ id: "111", text: "Iron Man" },
{ id: "123", text: "Superman" },
{ id: "124", text: "Batman" }]
}]

但它没有返回值,而是返回空字符串,而不是值,因为该返回函数不等待ajax成功函数。

方法2:
我尝试过从成功调用函数并从该函数返回值,如下所示

 function ajaxCall(){
var result;
$.ajax({
url: url_of_my_php_file,
dataType: 'json',
type: 'GET',
contentType: 'application/json',
success: function(data) {
// it returns json Object "data"
callBack(data);
}
});

function callBack(data){
return data;
}
return callBack();
}

在这种情况下,函数返回值,但仅返回主数组(heros)内的另一个数组,而不是外部变量,如何修复它?

我尝试了上面的方法,并且我看到了类似下面的内容(不确定我在哪里看到过这个)将ajax结果直接设置为变量

function ajaxCall(){
var result= $.ajax({
url: url_of_my_php_file,
dataType: 'json',
type: 'GET',
contentType: 'application/json',
success: function(data) {
// it returns json Object "data"
result = data;
}
},(0);
}

这个方法有效吗?
如果没有,那么有什么方法可以将该字符串获取到结果变量并将其返回给 obj 吗?

更新:

我已经尝试过this link ,但是这个方法对我不起作用,如果它对我不起作用那它怎么是一个副本?

最佳答案

使用回调

function ajaxCall(callback){
$.ajax({
url: url_of_my_php_file,
dataType: 'json',
type: 'GET',
contentType: 'application/json',
success: callback
});
}

ajaxCall(result => {
//do something with result
})

或者 promise

function ajaxCall(callback){
return new Promise((resolve, reject) => {
$.ajax({
url: url_of_my_php_file,
dataType: 'json',
type: 'GET',
contentType: 'application/json',
success: resolve,
error: reject
});
});
}

ajaxCall()
.then(result => {
//do something with result
})
.catch(err => {
//or err
});

关于javascript - 从 ajax 返回值并将该值设置为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44561178/

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