My app has a "Show all comments" similar to the one in Facebook. When the user clicks on the "show all" link, I need to update my list which initially has upto 4 comments with all comments. I'll show some code first and then ask some questions:
jQuery: ShowAllComments = function (threadId) { $.ajax({ type: "POST", url: "/Home/GetComments", data: { 'threadId': threadId }, dataType: "json", success: function (result) { alert(result); }, error: function (error) { alert(error); } }); }; Home Controller: // GET: /GetComments [HttpPost] public JsonResult GetComments(int threadId) { var comments = repository.GetComments(threadId).ToList(); return Json(comments ); }
Questions:
When I tried GET instead of POST, I got this error: "This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet." Is POST usually recommended instead of GET when making these ajax requests? If not, how do I get it to work with GET? Where do I set JsonRequestBehavior to AllowGet?
After changing it to POST, I now get this error: A circular reference was detected while serializing an object of type 'Models.Thread'. I'm using Entity Framework 4, and I've read that adding a [scriptignore] attribute on the navigation property would resolve this, so I added a partial class of the entity with the property, it said "property is already defined". How do I then deal with this because I can't directly modify the code generated by EF4.