我需要创建一个可以输入文本的小部件,我的服务器api.example.com可以执行操作,然后回复。问题是,在客户端获得最终的“完成报告”之前,我需要多次调用我的服务器。我目前有以下代码。
$('#widget-form').submit(function() {
var jqxhr = $.ajax({
url: "/startanalyzerp?string=someexampletext",
crossDomain: true,
dataType: 'json'
})
.success(function(report) {
alert("success"+report.id);
})
.error(function() {
alert("error");
})
.complete(function() {
alert("complete");
});
what / startanalyzerp做的是返回一个唯一的id(整数),我需要传递给后续的url。我有report.id这个整数的值。
我希望能够做的是调用其他函数 crossdomain 。
/step2?id=report.id
/step3?id=report.id
/step4?id=report.id
我已经能够在同一个域上使用:
$.each(endpoint_array, function(index,value) {
$.getJSON(value,function(report) {
});
其中endpoint_array是一个简单的数组,按照我想要调用的端点的顺序排列。
我喜欢这方面的任何帮助,我确信这很简单,我很遗憾。
答案 0 :(得分:1)
我可以看到两个选项:
1 - 仅使用Ajax执行一次调用并使用HttpRequest / cURL样式命令执行其余服务器端,然后将“已完成的报告”作为对初始ajax请求的响应发回。
2 - 嵌套ajax请求:
$('#widget-form').submit(function() {
var jqxhr = $.ajax({
url: "/startanalyzerp?string=someexampletext",
crossDomain: true,
dataType: 'json'
})
.success(function(report) {
alert("success"+report.id);
var jqxhr = $.ajax({
url: "/startanalyzerp/step2?string=someexampletext",
crossDomain: true,
dataType: 'json'
})
.success(function(report) {
alert("success"+report.id);
//Call step 3 and so on
})
.error(function() {
alert("error step 2");
})
.complete(function() {
alert("complete step 2");
});
})
.error(function() {
alert("error");
})
.complete(function() {
alert("complete");
});
答案 1 :(得分:0)