我正在尝试使用$ .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中检查我的网络时,它没有给出任何响应。 任何人都可以让我摆脱这个问题。我认为我在调用或错过参数时会做一些愚蠢的语法错误,这些参数是获取响应所必需的。感谢
任何快速帮助
答案 0 :(得分:0)
您可能会对XMLHttpRequests的same origin policy犯规。基本上,ajax请求只能与运行Javascript的页面相同的方案/主机/端口。
你真的在$.post()
电话中有一个硬编码的绝对网址吗?切换到相对URL可以消除这种可能性$.post("/SaveUserVote", ...
,保证方案,主机和端口是相同的。
您是否在浏览器开发工具的网络标签中看到了传出的ajax POST请求? (IE中的F12,chrome中的Ctrl-Shift-I)。