尝试在ASP.NET MVC中POST数据时发生Jquery.Ajax错误

尝试在ASP.NET MVC中POST数据时发生Jquery.Ajax错误

问题描述:

我无法使用.ajax访问控制器中的操作。该代码适用于我的开发机器,但只要将其放置在服务器上,就会出现401 Unauthorized错误。下面是在.aspx文件中的代码片段...尝试在ASP.NET MVC中POST数据时发生Jquery.Ajax错误

var encoded = $.toJSON(courseItem); 


    $.ajax({ 
     url: '<%= Url.Action("ViewCourseByID", "Home") %>/', 
     type: "POST",       
     dataType: 'json', 
     data: encoded, 
     //contentType: "application/json; charset=utf-8", 
     success: function(result) { 

更新:这也不行唯一的一次,当我通过JSON数据的Ajax调用,它正常工作与HTML数据。

+0

什么是服务器端动作定义?你有它的AuthorizeAttribute? – tvanfosson 2010-04-09 20:34:22

+0

我是新来的,我可以在哪里找到服务器端操作定义和授权属性? – 2010-04-09 20:40:17

这与ajax没有任何关系。得到你请求的URL并将其粘贴到一个单独的浏览器窗口中,你很可能会发现它会给你一个401.

所以,答案是要了解你为什么要获得401(iis配置,行动授权属性等)

+0

什么是IIS7的正确配置? – 2010-04-09 20:42:46

答:看起来我发现我的问题。

在我的控制器,我有以下方法:

[JsonFilter(Param = "course", JsonDataType = typeof(EmployeeSearchItem))] 
public ActionResult ViewCourseByID(EmployeeSearchItem course) 
{ 

...}

而且EmployeeSearchItem是在自己的.cs文件中的类:

namespace EducationAssistanceMVC.Models 
{ 
public class EmployeeSearchItem //: Controller 

{

public string empIDSearch { get; set; } 

...}

我的解决方案是在EmployeeSearchItem.cs文件中注释上述Controller的继承,并注释掉任何Using指令。

哇,我不敢相信花了这么长时间才弄清楚。希望这也能帮助别人。