在c#中从$ .Post获取空响应

时间:2014-01-31 12:46:46

标签: jquery ajax rest c#-4.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; }
    }

当我在服务器端点击此表单时,此服务正常工作。但是当我使用ajax帖子调用Firefox浏览器时在Firebug中检查我的网络时,它没有给出任何响应。 任何人都可以让我摆脱这个问题。我认为我在调用或错过参数时会做一些愚蠢的语法错误,这些参数是获取响应所必需的。感谢

任何快速帮助

1 个答案:

答案 0 :(得分:0)

您可能会对XMLHttpRequests的same origin policy犯规。基本上,ajax请求只能与运行Javascript的页面相同的方案/主机/端口。

你真的在$.post()电话中有一个硬编码的绝对网址吗?切换到相对URL可以消除这种可能性$.post("/SaveUserVote", ...,保证方案,主机和端口是相同的。

您是否在浏览器开发工具的网络标签中看到了传出的ajax POST请求? (IE中的F12,chrome中的Ctrl-Shift-I)。