Calling a function from Ajax on Asp.Net/Razor in C#
Calling a function from Ajax on Asp.Net/Razor in C#
Description of problem:
I have used DataTables in the past with MVP pages but am working with Razor and # this time. I have setup my DataTable on the page RTSkills.cshtml and configured the Ajax call as below -
On the RTSkills.cshtml.cs page I have my function -
Which I have tested and is returning JSON correctly when tested as a standalone function.
The problem is it doesn't seem to be returning it when 'requested' by DataTables. I don't think the function is actually being called as I have a breakpoint set on entry which is not 'triggered'. however I am getting a "SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data" when I look in the console window of the browser (FireFox)
Have you any tips on how to try and debug this? Or any ideas as to what I am doing wrong?
Cheers,
David
Answers
I'm not familiar with your server environment so can't help there. I would first use the browser's network inspector tool to see what the response is. Possibly its an error message that can point you in the right direction.
Kevin
Thanks Kevin,
That has helped a bit - I can see that the OnGet() call is being accessed from the RTSkills page but it is not calling the OnGetLoadDataSkillsetAsync()
So it seems I am returning the view/page itself.
I did have the default OnGet() commented out and there was no difference. I think my problem is that I'm not calling the OnGetLoadDataSkillsetAsync() but I can't see what I'm doing wrong in the code below - any ideas anyone?
Cheers,
David
Hi David,
Nothing obvious on the client side there. I can see from the screenshot that the browser is making a request to
/RTSkills?handler=LoadDataSkillsetAsync
. If that should be callingOnGetLoadDataSkillsetAsync
but isn't, I'm afraid that there is likely a routing problem somewhere in the app, and that's something you might need to ask on SO or some .NET specific forum about.Allan
Thanks Allan,
I will post to SO and see what they say.
Cheers,
David
I'd be interested to know what it is, if you get it figured out and have a chance to post back here. .NET routing is something I need to learn a bit more about myself!
Allan
Hi Allan,
I have solved my issue - it seems if you set the function being called as a Task and 'async' the Ajax call won't call it - I suspect this is due to not being able to deal with the returned 'Task'.
So I have taken out all the async and changed the function from a task to a 'normal' function and moved on to the next error!
In respect of that, is there any way of displaying the raw data that is returned to the DataTable? I can see the list has been created OK but DataTables is giving me a Requested Unknown Parameter error.
Cheers,
David
Use the browser's network inspector tool to see the JSON response. This technote provides instructions to do this.
Use this technote for troubleshooting steps.
Let us know what you find.
Kevin
Thanks Kevin,
All sorted now - I capitalised the column name in the "Columns" but the json keys are lowercase.
Cheers,
David
Good find. That will cause problems
Kevin