2012-04-11 81 views
0

我試圖做一個跨域POST到WCF休息服務。以下是我的服務代碼,獲取請求jQuery ajax跨域發佈到WCF休息服務

[WebInvoke(UriTemplate = "", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    public SampleItem Create(SampleItem instance) 
    { 

     instance.StringValue += " -success"; 
     return instance; 
    } 

而在客戶端,我有以下的jquery ajax調用

var input = { "Id": 10, "StringValue": "Test Value" }; 

       $("#post").click(function() { 
        $.ajax({ 
         type: "POST", 
         url: "http://localhost:50577/Service1/", 
         dataType: "jsonp", 
         data: JSON.stringify(input), 
         processData: false, 
         success: function(item) { 
          $("#itemId").val(item.Id); 
          $("#name").val(item.StringValue); 
         }, 
         error: function(xhr) { 
          alert("error " + xhr.responseText); 
         } 
        }); 

當調試服務器端代碼的請求來的方法但實例參數爲null。在同一個項目中,我有一個跨域的get,它沒有任何問題。 如果我將客戶端更改爲在同一個域中,並將數據類型更改爲json,它可以正常工作。

那麼跨域的帖子是不可能的?或者還有什麼我需要做的才能做到這一點。

回答

0

您解答了您的第一個問題,因爲您可以調試該服務!

AJAX調用的JSON輸入格式不正確。試試這個:

... 
data: JSON.stringify({instance : input}), 
...