2012-02-07 64 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