【问题标题】:Uncaught Reference Error Inf is not defined未定义未捕获的引用错误 Inf
【发布时间】:2014-08-15 21:43:47
【问题描述】:

所以我用这种方法使用 WCF:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
MathResult DoMath(double n1, double n2);

MathResult 的元素之一是商...任何当你除以 0 时,这个数字变得无限大。

WCF 以 INF 的值返回此字段。

这会导致问题,我收到“未捕获的 ReferenceError:未定义 INF”错误。

这是它返回的 JSON(如果 n1 = 1 且 n2 = 0):

{"__type":"MathResult:#Microsoft.Samples.ComplexTypeAjaxService","difference":1,"product":0,"quotient":INF,"sum":1}

这是我的代码:

$(document).ready(function(){
    var derp = function(result)
    {
        $("#output").text(result.sum);
    }

    $("#btn1").click(function(){
        var myurl = "http://localhost:54111/service.svc/DoMath";
        $.ajax({
            url: myurl,
            data: { n1: $("#txt1").val(), n2: $("#txt2").val() },
            type: 'GET',
            success: derp,
            error: function(){ alert("Oh ****"); },
            dataType: 'jsonp'
        });
    });
});

这是数据合同:

[DataContract]
public class MathResult
{
    [DataMember]
    public double sum;

    [DataMember]
    public double difference;

    [DataMember]
    public double product;

    [DataMember]
    public double quotient;
}

它适用于它返回的任何其他值。

【问题讨论】:

  • 那是无效的 JSON。 JSON 中没有 INF 令牌。
  • 那你建议我做什么?
  • 向负责该代码的人记录错误。可靠的服务器端 JSON 编码器库不会犯这种错误。
  • 那将是微软的 WCF 代码,哈哈……我想我会用 MS 记录一个错误。
  • 哈哈 - 好吧,这确实是一个错误。如果它认为无法成功编码该值,则它应该在编码期间抛出异常,或者它应该选择一些有效的 JSON 值(null 可能吗?JSON 中也没有NaN)。它应该做的是发出一些会在未来某个时候导致解析错误的东西。

标签: javascript jquery json wcf


【解决方案1】:

在这种情况下,INF 表示 INFINITY - 所以似乎在您的逻辑中某处被零除...

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2011-09-25
    • 2021-11-01
    • 2017-11-22
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多