我正在尝试发布到 ADO.NET 数据服务,但参数似乎在此过程中丢失了。
我有这样的东西:
[WebInvoke(Method="POST")]
public int MyMethod(int foo, string bar) {...}
然后我使用 prototype.js 进行 ajax 调用:
var args = {foo: 4, bar: "'test'"};
new Ajax.Requst(baseurl + 'MyMethod',
method: 'POST',
parameters: args,
onSuccess: jadda,
onFailure: jidda
}
如果我将“方法:‘POST’”替换为“方法:‘GET’”并将“WebInvoke(Method="POST")”替换为“WebGet”一切正常,但现在(使用 post)我得到的是:
Bad Request - Error in query syntax.
来自服务。
唯一的解决方法(我不想使用)是发送 URL 中的所有参数,即使我执行了一个帖子。欢迎任何想法。
最佳答案
WCF 和 ASMX 网络服务往往对请求主体有点挑剔,当您指定 args 时,请求通常被编码为表单发布,即 foo=4&bar=test 而不是您需要指定 javascript 文字:-
new Ajax.Request(baseurl + 'MyMethod', {
method: 'POST',
postBody: '{"foo":4, "bar":"test"}',
encoding: "UTF-8",
contentType: "application/json;",
onSuccess: function(result) {
alert(result.responseJSON.d);
},
onFailure: function() {
alert("Error");
}
});
关于.net - 从 WCF/ADO.NET 数据服务中的请求正文接收参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/225130/