需要的建议:MVC4和Jquery Ajax

时间:2012-11-26 14:27:45

标签: c# asp.net-mvc jquery

需要一些建议 - 使用MVC 4进行项目 - 用于Forms和Ajax。

通常我会进行AJAX调用

我的代码如下所示:

$.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "@SiteConfig.BaseUrl/assessment/getquestion",
                data: "{'AssessmentId':" + "'" + AssessmentId + "'" + ",'PageNumber':" + PageIndex + "}",
                dataType: "json",
                beforeSend: function(){
                    $('#ajaxLoader').show();
                    $('#questionContainer').hide();
                },
                success: function (msg) {
                    var data = msg.d;
},
                complete: function(){
                    $('#ajaxLoader').hide();
                    $('#questionContainer').show();
                },
                error:function (request, status, error){
                    alert(request.responseText);
                    alert(request);

                    $('#ajaxLoader').hide();
                    //window.location = '@SiteConfig.BaseUrl/questionnaire';
                }   
            });

[HttpPost]
public JsonResult GetQuestion(Guid AssessmentId, Int32 PageNumber)
{
   ... my code
   return this.Json(assessmentInfo, JsonRequestBehavior.AllowGet);
}

我不断获取返回的HTML而不是JSON - 它基本上只是在方法中向我发送整个页面的HTML - 我做错了什么?

调试问题会从javascript中产生以下结果: Javascript:SyntaxError:JSON.parse:意外字符

此外,如果我在C#GetQuestion方法中添加一个断点,它就不会被击中。

这可能是网址路由问题吗?

此外,对于评论命名约定的人:此方法的目的是获得一个问题。命名约定应首先遵循业务逻辑,然后遵循技术惯例。调用方法postquestion意味着我发布了一个根本没有意义的问题。

2 个答案:

答案 0 :(得分:0)

您应该像这样编辑GetQuestion方法:

[HttpPost]
public JsonResult GetQuestion(Guid AssessmentId, Int32 PageNumber)
{
   //my code
   return this.Json(myClass,JsonRequestBehavior.AllowGet);
}

请同时了解您的命名约定,如果您得到了什么,请调用方法GET。如果您发布了一些调用方法POST。

答案 1 :(得分:0)

好的,我发现了问题。

这确实是导致问题的路由问题。