2014-11-04 62 views
0

在ASP.NET中使用POST使用JSON時出現問題。當我使用POST時,請檢查我的代碼。 javascript代碼有什麼問題嗎?WCF服務JSON使用ASP.NET發佈數據

確切錯誤:

無法加載資源:99/Service1.svc/API/updtelogin.json的XMLHttpRequest 無法加載:服務器與405 狀態(不允許的方法) 本地主機迴應本地主機:99/Service1.svc/API/updtelogin.json。否 「訪問控制 - 允許來源」標題出現在請求的 資源中。原因'本地主機:1110'因此不允許 訪問。響應有HTTP狀態代碼405

IService

[OperationContract] 
    [WebInvoke(Method = "POST", 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "api/updtelogin.json")] 
    UpdateUser updteUser(RequestData rData); 

的RequestData

[DataContract(Namespace = "")] 
public class RequestData 
{ 
    [DataMember] 
    public string details { get; set; } 
} 

Service.svc

private UpdateUser updateuser(RequestData rData) 
    { 
     return updteUser(rData); 
    } 

    public UpdateUser updteUser(RequestData rData) 
    { 
     var data = rData.details.Split('|');    

    } 

這是從ASP.NET

我的javascript
<script type="text/javascript"> 
    $("#btnChange").live("click", function() { 
     var test = {}; 
     test.uname = "admin"; 
     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost:99/Service1.svc/api/updtelogin.json', 
      data: "{rData:" + JSON.stringify(test) + "}", 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (r) { 
       alert(r.d.uname); 
      } 
     }); 
    }); 
</script> 

回答

1

糾正我,如果我錯了,你有兩個應用:

  • 本地主機:99 - WCF服務
  • 本地主機:1110 - Web應用程序調用WCF服務

由於端口不同,這違反了您的ajax請求"same origin policy"

在這裏你有指導如何CORS標頭添加到WCF服務:Enable CORS on WCF Service. Get HTTP 405: Method Not Allowed

+0

什麼,現在我得到的是錯誤請求POST本地主機:99/Service1.svc/API/updtelogin.json 400(錯誤請求) – 2014-11-05 02:53:34

+0

它看起來像反序列化問題: 數據: 「{RDATA:」 + JSON.stringify(測試)+ 「}」 不符合您的類型的RequestData: 公共類的RequestData { [數據成員] 公共字符串的詳細信息{獲得;組; } } – b2zw2a 2014-11-05 07:12:14