On my .cshtml, I am getting all the buttons, inside a container, that were selected by the user this way:
<script>
$("#createnewidx").click(function (e) {
console.log('here111');
var selected = $("#WholeTagBlock input:checked").map(function (i, el) { return el.name; }).get();
alert("selected = [" + selected + "]\nas string = \"" + selected.join(";") + "\"");
$.ajax({
url: '@Url.Action("CreateNewIdx")',
data: selected.serializeArray(),
type: 'POST',
});
console.log('here333');
});
</script>
On my "selected" I am being able to get all the buttons that were selected by the user. Now, I need to pass this information to my controller. With that, I found that likely the most straight forward idea would be using a Jquery Post (For example, trying ideas like this one here).
My main goal is to send this data to a "public ActionResult CreateNewIdx" which is the function that I will be using to insert this data into a DB.
I also tried to use this idea:
$.ajax({
type: 'POST',
url: '@Url.Action("CreateNewIdx")',
data: { 'email': 'che607@yahoo.com' },
dataType: 'json',
cache: false,
contentType: "application/jsonrequest; charset=utf-8",
success: function (data) {
console.log('SUCCESS: ', data);
},
error: function (data) {
console.log('ERROR: ', data);
},
});
My problem is that when I try to retrieve the data on my Action it is always coming as null. The way that I was thinking in retrieving is:
public ActionResult CreateNewIdx(String email) (from the above example) public ActionResult CreateNewIdx(String FixedTag) (or "email2", for this next example):
$.ajax({
url: '@Url.Action("CreateNewIndex")',
type: "POST",
dataType: 'json',
data: { 'email2': selected},
cache: false,
contentType: "application/jsonrequest; charset=utf-8",
success: function (data) {
alert("hi" + data);
console.log('SUCCESS2: ', data);
}
});
Following the idea of one comment, I tried:
$.ajax({
type: 'POST',
url: '@Url.Action("CreateNewIndex")', // the method we are calling
data: JSON.stringify({ 'person' : 'che607@yahoo.com' }),
success: function (data) {
//alert('Yay! It worked!');
console.log('SUCCESS: ', data);
},
error: function (data) {
//alert('Oh no :(');
console.log('ERROR: ', data);
}
});
Finally, I tried:
$.ajax({
type: 'POST',
url: '@Url.Action("CreateNewIndex")', // the method we are calling
data: JSON.stringify({ person: selected }),
success: function (data) {
//alert('Yay! It worked!');
console.log('SUCCESS: ', data);
},
error: function (data) {
//alert('Oh no :(');
console.log('ERROR: ', data);
}
});
Adding contentType: "application/json":
$.ajax({
type: 'POST',
url: '@Url.Action("CreateNewIndex")', // the method we are calling
contentType: "application/json",
data: JSON.stringify({ 'person4': 'testing11'}),
success: function (data) {
//alert('Yay! It worked!');
console.log('SUCCESS: ', data);
},
error: function (data) {
//alert('Oh no :(');
console.log('ERROR: ', data);
}
});
And also:
$.ajax({
type: 'POST',
url: '@Url.Action("CreateNewIndex")', // the method we are calling
contentType: "application/json",
data: JSON.stringify({ person3: selected}),
success: function (data) {
//alert('Yay! It worked!');
console.log('SUCCESS: ', data);
},
error: function (data) {
//alert('Oh no :(');
console.log('ERROR: ', data);
}
});
Am I missing something?