I need to send an XML type data to backend using jquery, ajax as a DELETE request. This returns empty array from backend request body. How can I send id properly?
here is my code,
function deleteProduct(id) { var xmlDocument = $( `<productsData> <Prod_ID>${id}</Prod_ID> </productsData>`); $.ajax({ type:"DELETE", url:"http://localhost:8000/delete", data:JSON.stringify({ data : xmlDocument }), contentType: 'application/json', dataType: 'text' }); }
I need to send this data,
<productsData> <Prod_ID>2</Prod_ID> </productsData>
this 2 comes from the function parameter.
this is my backend in express
app.delete('/delete',(req,res,next)=>{ console.log(req.body); res.status(200).json({ message: "success" }) })
this returns empty object.How can I solve this?
Advertisement
Answer
If you want to send XML, don’t say you’re sending application/json
:
function deleteProduct(id) { return $.ajax({ type: "DELETE", url: "http://localhost:8000/delete", data: `<productsData><Prod_ID>${id}</Prod_ID></productsData>`, contentType: 'application/xml' }); }
By returning the Ajax request, you can do something like this:
deleteProduct(42).done(function () { // delete completed, remove e.g. table row... }).fail(function (jqXhr, status, error) { // delete failed, keep table row & show alert alert("Could not delete product: " + error); });