I create an array with javascript that has some ids. I pass them back to my controller like so
$.ajax(
{
url: "/Home/GetChildKeys",
data: { ids: nodeKeys },
dataType: "json",
type: "GET"
}).done(function (result) { });
What I’m not sure on is how I get that data in my c# code to work with it. Here’s my function in my controller
//how do I get the array passed in as an argument [HttpGet] public JsonResult GetChildKeys(object var) { //need to figure out how to read id data and then pass back child keys return Json("foobar", JsonRequestBehavior.AllowGet); }
The param you choose for your ‘data’ option in the ajax-request must match the param of your post-action.
[HttpGet] public JsonResult GetChildKeys(someType ids) {
...
Is nodeKeys a list of objects, or a string? That will determine the "someType" above
I knew I’d have to get the type, I just wasn’t for sure what type it would be.
nodeKeys is just a javascript string array;
Something like
var nodeKeys = ["cat_1", "cat_2", "cat_3"];
That’s not json, but anyway, try
string[] ids
or
List<string> ids
Then you could do
[HttpGet] public JsonResult GetChildKeys(string[] ids) {
foreach (var id in ids)
{
// process each id here
}
...
}
I was under the impression if I sent the data like this (underlined in bold)
$.ajax(
{
url: "/Home/GetChildKeys",
data: { ids: nodeKeys },
dataType: "json",
type: "GET"
}).done(function (result) { });
that it would convert that to json for me?
The "data" node will be json, but the data you are passing in the "ids" property is just a plain javascript array.
hi,
usually ajax communication more serialized content, while receiving action method have to serialise as per mention data type,
client : var array1 = ["A", "B", "C", "D"];
server : public JsonResult AjaxCallTest(List<string> postedModel){ //code…… }
client : var array = [1, 2, 3, 4, 5];
server : public JsonResult AjaxCallTest(List<string> postedModel){ //code….. }
or just pass json string, then in controller action have to parse posted json to respective model object.
Ref : serializing and deserializing json in c#
Thanks,
Jai
So how do I go about passing that array back to my application?
Basically, there’s some code that runs through a treeview and pulls the ids of any checked items and pushes them into the array. So, I need to send that array of ids back to my controller as json data. I don’t really care how they get there, array, list,
etc. but I just need to be able to loop through them. Ideas?
hi,
Client :
var selectedItems = [1, 2, 3, 4, 5]; // try to push your selected item.
$.ajax({
url: "/Account/AjaxCallTest/", //your url
traditional: true,
dataType: "json",
type:’post’,
data: { ids : selectedItems },
success:function(data) {
},
error: function (errorMsg) {
}
});
Server:
[HttpPost]
public JsonResult AjaxCallTest(List<int> ids )
{
// your logic…
}
Thanks,
Jai.
That’s what I tried after your first post with no luck. This is what I have
var nodeKeys = ["cat_1", "cat_2", "cat_3"];
$.ajax(
{
url: "/Home/GetChildKeys",
data: { ids: nodeKeys },
dataType: "json",
type: "GET"
}).done(function (result) { });
C#
//how do I get the array passed in as an argument [HttpGet] public JsonResult GetChildKeys(List<string> ids) { //ids is still null var foo = ids; //need to figure out how to read id data and then pass back child keys return Json("foobar", JsonRequestBehavior.AllowGet); }
http://forums.asp.net/t/1934215.aspx?Using+jQuery+ajax+to+call+asmx+webservice+methods
either add
contentType:
"application/x-www-form-urlencoded; charset=UTF-8",
to your $.ajax call, or try
data: JSON.stringify
({ ids: nodeKeys }),
I’ve tried both of those and ids is still null
nodeKeys = ["cat_1", "cat_2", "cat_3"];
$.ajax(
{
url: "/Home/GetChildKeys",
data: JSON.stringify({ ids: nodeKeys }),
dataType: "json",
type: "GET"
}).done(function (result) { });
and even
nodeString = "cat_1,cat_2,cat_3";
$.ajax(
{
url: "/Home/GetChildKeys",
data: "{keys: ‘" + nodeString + "’}",
dataType: "json",
type: "GET"
}).done(function (result) { });
You have to set the correct contentType too so the service knows how to interpret the data you are sending. As well as the link I posted with all the examples, look at this to see how you can use the browser’s dev tools to see what is being sent and what
the response is.