Radu
Radu

Reputation: 626

Custom $.ajax data

I'm trying to send some data through $_POST using $.ajax. I tried sending custom fields through 'data', however I can't make it work.

Here's the code I've got:

    $.ajax({
          method: "POST",
          url: templateDir.concat('/updatedetails.php'),
          data: { description: $(replaced).val().replace(/['"]+/g, ''), id: author }
        })

This code works. However I don't want it to always send 'description' - I want it to use the name attribute of the element like this:

    $.ajax({
          method: "POST",
          url: templateDir.concat('/updatedetails.php'),
          data: { $(replaced).attr('name'): $(replaced).val().replace(/['"]+/g, ''), id: author }
        })

With this code, I get the following error: 'expected expression, got '.''

Upvotes: 0

Views: 58

Answers (2)

iCollect.it Ltd
iCollect.it Ltd

Reputation: 93561

You can't dynamically define the name of a property in an object literal. You need to create an object and set the property using array syntax.

e.g.

var data = {id: author };
data[$(replaced).attr('name')] = $(replaced).val().replace(/['"]+/g, '');
$.ajax({
      method: "POST",
      url: templateDir.concat('/updatedetails.php'),
      data: data

    })

Upvotes: 2

Tino M Thomas
Tino M Thomas

Reputation: 1746

var inputObj = {};
inputObj[$(replaced).attr('name')] = $(replaced).val().replace(/['"]+/g, '');
inputObj['id'] = author;
$.ajax({
      method: "POST",
      url: templateDir.concat('/updatedetails.php'),
      data: inputObj
});

Upvotes: 3

Related Questions