Reputation: 626
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
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
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