【发布时间】:2016-08-31 17:35:32
【问题描述】:
短版:我似乎无法处理完成 jQuery AJAX 请求后服务器返回的数据。
加长版: 我正在编写一个库存系统,主要使用 Kendo UI Grid 来处理系统中的发票。创建新发票时,我需要先创建发票,然后将行项目添加到发票并保存。我正在通过 AJAX 请求创建发票,然后使用 Kendo UI DataSource 的 create 方法添加行项目。我可以通过我的 Web API 2 控制器提交发票,并从服务器返回带有新创建对象的响应,但是如何让新创建的对象与我的网格交互?具体来说,我需要将新发票的 ID 添加到网格的每个行项目的 InvoiceID 字段中。
我已经完成了位于此处的非常明确的答案:How do I return the response from an asynchronous call? 不过,我仍然缺少一些东西,因为它对我来说还没有完全“点击”。我的代码如下:
$("#grid").kendoGrid({
dataSource: {
batch: false,
transport: {
create: { ... },
parameterMap: function (data, operation) {
return JSON.stringify(data);
}
},
schema: { ... }
}
}
},
toolbar: [ ... ],
columns: [ ... ],
save: function(e) { ... },
saveChanges: function (e) {
CreateInvoice().done(function (data) {
// process invoice
}).fail(function () {
// display error message
});
}
});
});
function CreateInvoice(invoice) {
invoice = {
ClientID: $('#IDText').text(),
Status: 1,
...
};
$.ajax({
url: '/api/invoice/',
type: 'POST',
data: JSON.stringify(invoice),
contentType: "application/json",
});
};
永远不会调用 .done 和 .fail 方法。使用 Fiddler 我可以看到数据是从服务器返回的,但是我无法在 CreateInvoice() 函数或 saveChanges 函数中查看返回的数据,我不确定我做错了什么。
【问题讨论】:
标签: javascript jquery ajax asynchronous kendo-ui