ser*_*ays 5 javascript ajax jquery json
好奇其他人认为构建 API 调用的最佳方式是什么,该调用取决于 jQuery 中另一个 API 调用的响应。
脚步:
这就是我将如何通过一些粗略的错误处理来构建它:
$(document).ready(function() {
$.ajax({
url: "http://example.com/json",
type: 'POST',
dataType: 'jsonp',
timeout: 3000,
success: function(data) {
// Variables created from response
var userLocation = data.loc;
var userRegion = data.city;
// Using variables for another call
$.ajax({
url: "http://example2.com/json?Location=" + userLocation + "&City=" + userRegion,
type: 'POST',
dataType: 'json',
timeout: 3000,
success: function(Response) {
$(.target-div).html(Response.payload);
},
error: {
alert("Your second API call blew it.");
}
});
},
error: function () {
alert("Your first API call blew it.");
}
});
});
Run Code Online (Sandbox Code Playgroud)
在架构方面,可以考虑使用Promise模式将每一步解耦成一个函数,每个函数只关心自己的任务(不参考流程中的其他步骤)。当您需要重用这些步骤时,这提供了更大的灵活性。这些单独的步骤稍后可以链接在一起以形成一个完整的流程。
https://www.promisejs.org/patterns/
http://api.jquery.com/jquery.ajax/
http://api.jquery.com/category/deferred-object/
function displayPayload(response) {
$(".target-div").html(response.payload);
}
function jsonpCall() {
return $.ajax({
url: "http://example.com/json",
type: 'GET',
dataType: 'jsonp',
timeout: 3000
});
}
function jsonCall(data) {
// Variables created from response
var userLocation = data.loc;
var userRegion = data.city;
// Using variables for another call
return $.ajax({
url: "http://example2.com/json?Location=" + userLocation + "&City=" + userRegion,
type: 'GET',
dataType: 'json',
timeout: 3000
});
}
$(document).ready(function() {
jsonpCall()
.done(function(data) {
jsonCall(data)
.done(function(response) {
displayPayload(response);
}).fail(function() {
alert("Your second API call blew it.");
});
}).fail(function() {
alert("Your first API call blew it.");
});
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5993 次 |
最近记录: |