在此示例中,将数据从一个调用传递到另一个调用的最佳方法是什么?

时间:2018-06-13 07:35:10

标签: javascript jquery html ajax javascript-objects

这当然只是一个模型,但你会得到一个想法。

这是第一个电话:

function getData () {
  $.ajax{( 
     type:'GET',
     url: url,
     success: function (res) {
        // logic 
        // 'res.secret' property value that needs to be passed
        }
    )}
}

现在,这会获得一组数据,我需要稍后使用POST方法进行另一次调用。我们称之为res.secret

所以,接下来的电话:

function postData () {
  $.ajax{( 
     type:'POST',
     url: url + res.secret,
     success: function (res) {
        //logic
        }
    )}
}

res.secret属性中将postData()传递给url的最佳方式是什么?我可以将其保存为html data-*,但不要认为这是最好的方法。

另请注意,postData()getData()位于不同的.js个文件中。

2 个答案:

答案 0 :(得分:1)

我老了,不爱承诺,我会这样做;将成功的第一个结果作为参数传递给第二个:

function getData () {
   $.ajax{( 
     type:'GET',
     url: url,
     success: function (res) {
        postData(res.secret);
     }
   )}
}

function postData (theSecret) {
  $.ajax{( 
    type:'POST',
    url: url + theSecret,
    success: function (res) {
      //logic
    }
  )}
}

这导致顺序和条件执行。

答案 1 :(得分:0)

这是使用承诺的理想案例。以下是我在ES6中使用async / await

的方法
(async () => {

    // result1 awaits for GET request to be resolved
    var result1 = await fetch(url);
    // then you pass your 'secret' from result1 to your next POST call
    var result2 = await fetch(`${url}${result1.secret}`, {method: 'post'});

})();;