Skip to content
Advertisement

How can I send XML data using JQuery AJAX as a delete request?

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);
});
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement