Consuming OData with plain JavaScript is a bit painful, as we would require handling some of the low-level conversions. datajs is a JavaScript library that simplifies this task.
datajs converts data of any format that it receives from the server to an easily readable format. The batch request sent is a POST request to the path /odata/$batch, which is made available if batch update option is enabled in the OData route configuration.
As seen in the last post, a batch update request bundles of a number of create put and patch requests. These operations have to be specified in an object literal. Following snippet demonstrates it with a create, an update and a patch request:
Following snippet posts the above data to the /odata/$batch endpoint and then extracts the status of response of each request:
Happy coding!
datajs converts data of any format that it receives from the server to an easily readable format. The batch request sent is a POST request to the path /odata/$batch, which is made available if batch update option is enabled in the OData route configuration.
As seen in the last post, a batch update request bundles of a number of create put and patch requests. These operations have to be specified in an object literal. Following snippet demonstrates it with a create, an update and a patch request:
var requestData = {
__batchRequests: [{
__changeRequests: [
{
requestUri: "/odata/Customers(1)",
method: "PATCH",
data: {
Name: "S Ravi Kiran"
}
},
{
requestUri: "/odata/Customers(2)"
data: {
Name: "Alex Moore",
Department: "Marketing",
City:"Atlanta"
}
},
{
requestUri: "/odata/Customers",
method: "POST",
data: {
Name: "Henry",
Department: "IT",
City: "Las Vegas"
}
}
]
}]
};
Following snippet posts the above data to the /odata/$batch endpoint and then extracts the status of response of each request:
OData.request({
requestUri: "/odata/$batch",
method: "POST",
data: requestData,
headers: { "Accept": "application/atom+xml"}
}, function (data) {
for (var i = 0; i < data.__batchResponses.length; i++) {
var batchResponse = data.__batchResponses[i];
for (var j = 0; j < batchResponse.__changeResponses.length; j++) {
var changeResponse = batchResponse.__changeResponses[j];
}
}
alert(window.JSON.stringify(data));
}, function (error) {
alert(error.message);
}, OData.batchHandler);
Happy coding!