2012-02-07 63 views
0

我试图发送AJAX POST请求MVC应用程序阿贾克斯POST使用JSON

$.ajax({ 

     type: 'POST', 
     dataType: 'json', 
     data: {"FirstName":"chris","LastName":"cane"}, 
     contentType: 'application/json', 
     url: "http://dev.irp.com/irp.Ajax.Search/home/Foo", 
     success: function (data) { 
      alert(data); 
     } 
    }); 

这个脚本使用jQuery MVC应用程序上的另一个领域是存在于ASP.NET应用程序在不同的服务器上。我的MVC应用程序处理代码如下

[HttpPost] 
    public JsonResult Foo(fromclient test) 
    { 
     var obj = new SearchMemberServiceClient(); 
     var members = obj.FindMember(test.FirstName, test.LastName, "", "", "", "").Members; 

     IEnumerable<Bar> sorted = 
      from a in members 
      orderby a.FirstName ascending 
      group a by new 
      { 
       a.FormattedFullName, 
       a.MembershipsProxy[0].GoodFromDate, 
       a.MembershipsProxy[0].GoodThroughDate, 
      } into k 
      select new Bar 
      { 
       FormattedName = k.Key.FormattedFullName, 
       goodfrom = k.Key.GoodFromDate, 
       goodthru = k.Key.GoodThroughDate, 
      }; 
     return Json(sorted.ToList()); 
    } 

public class Bar 
{ 
    public string FormattedName { get; set; } 

    public DateTime goodfrom { get; set; } 

    public DateTime goodthru { get; set; } 
} 
public class fromclient 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

问题是脚本需要发布到该网址并获取json数据。但是,由于控制器没有任何视图,当我在客户端查看控制台时,它表示URL为404错误,并且它表示XMLHttpRequest无法加载http://dev.irp.com/irp.Ajax.Search/home/Foo。 Access-Control-Allow-Origin不允许原产地http://web-dev.irps.com

我不知道问题是否与ajax请求的url的绝对路径有关。如果是这样,我怎么能克服这一点?

+0

我假设“foo”是一个错字(http://dev.irp.com/irp.Ajax.Search/home/foo)而不是Foo。如果是这样,请改变它以消除任何混淆。 – 2012-02-07 17:16:32

+0

@rontornambe我做了一些修改。请检查一下。 – Krishh 2012-02-07 17:24:29

回答

1

可以试试JSONP吗?为什么选择json?这是完美的跨域。

3

由于same origin policy限制内置于浏览器中,因此无法将AJAX请求发送到不同的域。可能的解决方法是让服务器返回JSONP而不是JSON。您可以在控制器操作中使用自定义JsonpResultan example