需要一些建议 - 使用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意味着我发布了一个根本没有意义的问题。
答案 0 :(得分:0)
您应该像这样编辑GetQuestion方法:
[HttpPost]
public JsonResult GetQuestion(Guid AssessmentId, Int32 PageNumber)
{
//my code
return this.Json(myClass,JsonRequestBehavior.AllowGet);
}
请同时了解您的命名约定,如果您得到了什么,请调用方法GET。如果您发布了一些调用方法POST。
答案 1 :(得分:0)
好的,我发现了问题。
这确实是导致问题的路由问题。