【问题标题】:jquery ajax call to WCF service passing data with a data type "long" value sends 0jquery ajax 调用 WCF 服务传递数据类型为“long”值的数据发送 0
【发布时间】:2016-10-12 04:21:39
【问题描述】:

我有一个服务合同,方法如下:

[OperationContract]
    [WebInvoke(Method = "POST",
                               RequestFormat = WebMessageFormat.Json,
                               ResponseFormat = WebMessageFormat.Json,
                               BodyStyle = WebMessageBodyStyle.Bare,
                               UriTemplate = "FibonacciNumber/")]
    long FibonacciNumber(long n);



public long FibonacciNumber(long n)
    {
        var a = 0;
        var b = 0;

        for(var i = 0; i <= n; i++)
        {
            if(i == n)
            {
                return a;
            }

            var c = a;
            a = b;
            b = b + c;
        }

        return 0;
    }

但是,当我尝试使用 jquery ajax 调用来调用上述内容时,当 FibonacciNumber 服务被命中时,参数“n”的值为 0,知道可能出了什么问题吗?我确实在控制台记录了“$('#fibIndex').val()”的值,它在客户端上显示了正确的值:

$('#btnFib').on('click', function () {
        fibIndex = $('#fibIndex').val();

        $.ajax({
            url: "http://localhost:61924/MyService.svc/FibonacciNumber/",
            type: "POST",
            dataType: "json",
            data: Number(fibIndex),
        }).done(function (data) {
            $('#fibResult').html(data);
        }).fail(function () {
            console.log("error");
        });
    });

提前感谢您在这方面提供一些启示。

【问题讨论】:

  • fibIndex 是否已在全球范围内声明?
  • 感谢提问,这是一个错字,var 应该在“fibIndex”前面。这意味着在本地声明,仍然无法正常工作
  • 在浏览器控制台中检查 netwrok 选项卡以查看实际传递给服务的值是什么?
  • 嗨,Mairaj,请求标头是:Accept:application/json, text/javascript, /; q=0.01 Accept-Encoding:gzip, deflate Accept-Language:en-US,en;q=0.8 Connection:keep-alive Content-Length:0 Host:localhost:61924 Origin:localhost:63479Referer:localhost:63479/Home/Index User-代理:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
  • 在这里你会看到请求 url 和数据请分享。

标签: jquery asp.net wcf


【解决方案1】:

我发现我的代码存在问题。问题是我错过了 contentType 并且没有传递正确的数据。正确的例子如下:

$('#btnFib').on('click', function () {
        var fibIndex = Number($('#fibIndex').val());

        $.ajax({
            url: "http://localhost:61924/MyService.svc/FibonacciNumber/",
            type: "POST",
            dataType: "json",
            contentType: "application/json",
            data: JSON.stringify(fibIndex),
        }).done(function (data) {
            $('#fibResult').html(data);
        }).fail(function (a) {
            console.log(a);
        });
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2015-12-31
    • 2014-10-17
    • 1970-01-01
    • 2012-03-08
    • 2017-03-17
    相关资源
    最近更新 更多