2014-01-31 30 views
0

我想使用$ .Post()調用休息服務。調用我的服務的語法如下:

$.post("http://MyIp/SaveUserVote", { "PostId": 1, "UserId": 3 }, function (result) { 
          alert("success"); 
         }); 

我的服務接受輸入並以JSON返回結果。請檢查下面我休息服務:

public object Post(SaveUserVote request) 
    { 

     if (string.IsNullOrEmpty(request.PostId.ToString())) 
      throw new ArgumentNullException("Required", "PostId cannot be null"); 

     try 
     { 
      return SaveUserVote(request); 
     } 
     catch (Exception ex) 
     { 
      objResult._result = "NotSuccess"; 
      dicResult.Add("UserVote", objResult); 

      string output = JsonConvert.SerializeObject(dicResult); 
      return output; 
     } 
    } 

     public string SaveUserVote(SaveUserVote userPost) 
    { 
       Result objResult = new Result(); 
       Dictionary<string, Result> dicResult = new Dictionary<string, Result>(); 
       var objVote = new PostVote 
      { 
       PostId = userPost.PostId, 
       UserId = userPost.UserId, 
      }; 
      _dbcontext.PostVotes.InsertOnSubmit(objVote); 
      _dbcontext.SubmitChanges(); 


     objResult._result = "Success"; 
     dicResult.Add("UserVote", objResult); 

     string output = JsonConvert.SerializeObject(dicResult); 
     return output; 
    } 

      public class Result 
    { 
     public string _result { get; set; } 
    } 

此服務工作正常,當我打這個形式在服務器端。但是,當我在Firefox瀏覽器的Firebug中使用ajax post調用它時檢查我的Net時,它沒有給出任何迴應。 任何人都可以讓我擺脫這個問題。我認爲我在調用或錯過了獲取響應所需的參數時會出現一些愚蠢的語法錯誤。謝謝

ANY QUICK HELP ??

回答

0

您可能會遇到XMLHttpRequests的same origin policy的問題。基本上ajax請求只能與運行Javascript的頁面相同的方案/主機/端口。

您確實在$.post()調用中有硬編碼的絕對URL嗎?切換到相對URL將消除這種可能性$.post("/SaveUserVote", ...,保證方案,主機和端口是相同的。

您是否在瀏覽器開發工具的網絡選項卡中看到傳出的ajax POST請求? (IE中的F12,chrome中的Ctrl-Shift-I)。

+0

其實服務託管在我本地的IIS上,是的,我得到了我的服務命中,這意味着該職位工作 – user3124690