【问题标题】:Ajax query using Jquery to ASP.NET webservice giving "Bad Request" only for methods with parameters [closed]使用 Jquery 到 ASP.NET Web 服务的 Ajax 查询仅针对带参数的方法提供“错误请求”[关闭]
【发布时间】:2012-01-24 18:34:56
【问题描述】:

我在 JQuery 中调用 ASP.NET Web 服务时遇到问题。我基本上遵循以下所有说明:

http://www.codeproject.com/Articles/211489/Using-JSON-with-ASP-NET-3-5

我已经用 C# 和 ASP.NET 编写了 Web 服务和控制台服务器。

我的 JQuery 如下:

    jQuery.support.cors = true;
$.ajax({
    type: "POST",
    contentType: "application/json; charset=ut-8",
    username: "John",
    password: "Doe",
    url: "https://machinename:8043/WtfService/HelloWorldPostSimple1",
    data: '{"firstName":"John"}',
    dataType: "json",
    success: function(msg) {
        alert(msg.d);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert(jqXHR + " : " + textStatus + " : " + errorThrown);
    }
});

第一行允许在 IE 中进行跨域调用,这是可行的。如果我调用不接受参数的 Web 服务方法,它对 GET 和 POST 工作 100%。

我的web服务方法如下:

[WebInvoke(Method = "POST", UriTemplate = "HelloWorldPostSimple1")]
[PrincipalPermission(SecurityAction.Demand, Role = "WtfUser")]
public string HelloWorldPostSimple1(string firstName)
{
    return string.Format("Hello {0} {1}", firstName, "Doe");
}

我已经尝试将请求和响应格式专门放入 JSON,但仍然没有运气。

【问题讨论】:

  • 你试过在ajax中添加:contentType: "application/json",吗?
  • 是的,它在 ajax 调用中
  • 与您的问题没有直接关系,但我注意到您链接到的文章犯了手动 JSON 序列化响应的错误。确保你不要那样做。更多信息:encosia.com/…
  • 我有一个类似的服务正在运行,但它在我的实例中的方法上有一个 [OperationContract] 装饰器。
  • 我不确定这是否会导致您的任何问题,但 contentType 字符集应该是 utf-8(您缺少“f”)

标签: jquery asp.net ajax wcf json


【解决方案1】:

将此data: '{"firstName":"John"}', 更改为data: { firstName: "John" }

【讨论】:

    【解决方案2】:

    jQuery.ajax中有一个参数,“crossDomain”默认为false,你试过设置为true吗?

    【讨论】:

    • 我有。还是不行。我对不需要参数的 Web 服务方法的其他调用确实有效。
    【解决方案3】:

    我建议你使用JSON.org free JavaScript JSON parser。这会将对象转换为格式良好的 JSON 请求(示例如下)。

    var jsonRequest = { firstName: "John" };
    
    $.ajax({
        data: JSON.stringify(jsonRequest)
    });
    

    【讨论】:

    • 谢谢,我没有尝试过,但不幸的是仍然没有运气。
    • JSON.stringify() 将修复格式错误的 JSON(错误/缺少引号)。如果您仍然有错误,您应该使用 Firebug 查看您的 JSON 请求,看看是否有任何“奇怪”的地方。
    【解决方案4】:

    非常感谢大家。

    原来 utf-8 拼写错误:(

    感谢 Dave Simione 接手!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多