GetData(...)
方法正常,但 SetSimple(...)
方法抛出错误 400。
Javascript:
$.ajax(url,
{
type: action,
timeout: 3000,
data: { value: 123 },
contentType: "application/json; charset=utf-8",
//dataType: "json",
success: function (data, textStatus, jqXHR) {
displayInfo("success: "+data);
},
error: function(jqXHR, textStatus, errorThrown ) {
displayInfo("error: "+errorThrown+" "+textStatus);
}
}
);
C#:
[WebGet(RequestFormat = WebMessageFormat.Json)]
string GetData(int value);
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
string SetSimple(int value);
为了运行/测试它,我在浏览器中打开该服务,然后在另一个浏览器中打开带有 javascript 的测试页面。 (并且 dataType: "json"似乎没有帮助。) fiddler 响应显示“服务器在处理请求时遇到错误。有关更多详细信息,请参阅服务器日志”,但我在事件日志中没有看到任何内容。有人知道我做错了吗?
最佳答案
您应该将 JavaScript 对象转换为字符串。
JSON.stringify(data)
然后以你的例子为例
$.ajax (url,
{
type: action,
timeout: 3000,
data: JSON.stringify({ value: 123 }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, textStatus, jqXHR) {
displayInfo("success: "+data);
},
error: function(jqXHR, textStatus, errorThrown ) {
displayInfo("error: "+errorThrown+" "+textStatus);
}
}
);
关于c# - ajax GET 有效,POST 给出 400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468834/