.net - 从 WCF/ADO.NET 数据服务中的请求正文接收参数

标签 .net javascript ajax wcf ado.net

我正在尝试发布到 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/

相关文章:

c# - 使用 .NET 时如何限制文件碎片?

javascript - 我如何通过使用javascript单击asp文本字段来检查单选按钮

c# - 无法启动已配置的 Visual Studio 开发 Web 服务器

javascript - AngularJS : Should service's boolean method return promise that resolves to true/false, 或者被解决/拒绝?

JavaScript - 子集求和算法的特例

asp.net - 如何使用.Net 3.5配置AntiXSS?

java - 如何制作一个在每个 AJAX 请求页面时重新呈现的 wicket 组件?

c# - 从 TaskScheduler 中取消 TPL 任务

javascript - 如何在 Angular 服务中注入(inject)依赖项?

javascript - 为什么 ajaxSubmit 不发送带有 X-Requested-With=XMLHttpRequest 请求 header 的正确 ajax 请求