rak*_*ode 2 javascript php ajax jquery json
我在一个函数内有一个 ajax 调用,该函数在成功函数上返回一个 json 对象,我需要将返回的数据设置为一个变量,搜索答案但我找不到任何有用的答案。
方法 1:
即时调用函数并将返回值设置为这样的变量
var obj = ajaxCall();
Run Code Online (Sandbox Code Playgroud)
我的代码就像
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;
}
Run Code Online (Sandbox Code Playgroud)
如果我在成功回调中记录数据,我的 json 与此类似
[{ collection: "Super Hero", img:"http://img_url.jpg",
heros: [{ id: "111", text: "Iron Man" },
{ id: "123", text: "Superman" },
{ id: "124", text: "Batman" }]
}]
Run Code Online (Sandbox Code Playgroud)
但它不返回值,而不是返回空字符串的值,因为该返回函数不等待 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();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,函数返回值,但只有主数组(英雄)内的另一个数组,而不是外部变量,如何解决?
我尝试了上面的方法,我看到了类似下面的东西(不知道我在哪里看到过这个)将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);
}
Run Code Online (Sandbox Code Playgroud)
这个方法有效吗?
如果没有,那么有什么方法可以将该字符串转换为结果变量并将其返回给 obj?
更新:
我已经尝试过此链接,但该方法对我不起作用,如果它对我不起作用,那么它是如何复制的?
Kir*_*ill 10
使用回调
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
})
Run Code Online (Sandbox Code Playgroud)
或承诺
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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9582 次 |
| 最近记录: |