【问题标题】:E_INVALID_PAR_TYPE is triggered during the page load (cldr, globalize)在页面加载期间触发 E_INVALID_PAR_TYPE (cldr, globalize)
【发布时间】:2017-03-29 01:47:09
【问题描述】:

我们正在尝试使用cldr/globalize,不幸的是,在页面加载过程中触发了错误。

调试代码根本没有帮助,我不知道是哪个输入字段产生了问题

您需要更多信息吗?您需要更多代码吗?让我知道


JavaScript,加载 cldr 数据,将语言环境设置为“en”

$(document).ready(function () {
  // http://stackoverflow.com/questions/35863853/using-jquery-globalize-with-mvc-5
  // download json files on https://github.com/unicode-cldr?page=2
  // how to setup globalize, cldr and json data: http://johnnyreilly.github.io/globalize-so-what-cha-want

  var locale = 'en'; // TODO: manage the localization based on user preferences (browser)

  // http://stackoverflow.com/questions/32586551/what-is-the-best-way-to-handle-validation-with-different-culture
  $.when(
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/likelySubtags.json"),
      $.getJSON("/Scripts/plugins/cldr-numbers-full-30.0.2/main/" + locale + "/numbers.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/numberingSystems.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/plurals.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/ordinals.json"),
      $.getJSON("/Scripts/plugins/cldr-numbers-full-30.0.2/main/" + locale + "/currencies.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/currencyData.json"),
      $.getJSON("/Scripts/plugins/cldr-dates-full-30.0.2/main/" + locale + "/ca-gregorian.json"),
      $.getJSON("/Scripts/plugins/cldr-dates-full-30.0.2/main/" + locale + "/timeZoneNames.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/timeData.json"),
      $.getJSON("/Scripts/plugins/cldr-core-30.0.2/supplemental/weekData.json"),
      $.getJSON("/Scripts/plugins/cldr-dates-full-30.0.2/main/" + locale + "/dateFields.json"),
      $.getJSON("/Scripts/plugins/cldr-units-full-30.0.2/main/" + locale + "/units.json"),
      console.log("JSONs loaded")
      ).then(function () {
        console.log("start slicing");
        return [].slice.apply(arguments, [0]).map(function (result) {
          console.log("slicing done");
          return (typeof result === 'undefined' ? null : result[0]);
        });
      }).then(Globalize.load).then(function () {
        Globalize.locale(locale);
        console.log("Locale set to " + locale);
      }).then(console.log("LOADED EVERYTHING"));


});

HTML ,加载 javascripts

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>StratEx | Project management</title>
  <meta http-equiv="X-UA-Compatible" content="IE=EDGE">
  <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css">
  <link href="/Scripts/plugins/jquery-ui-1.11.4/jquery-ui.css" rel="stylesheet">

  <link href="/Content/font-awesome/css/font-awesome.css" rel="stylesheet">

  <link href="/Content/bootstrap-3.3.7/css/bootstrap.css" rel="stylesheet">

  <link href="/Content/animate.css" rel="stylesheet">
  <link href="/Content/style.css" rel="stylesheet">

  <link href="/Content/themes/redmond/jquery-ui-1.10.3.custom.min.css" rel="stylesheet">

  <script type="application/javascript" async="" defer="" src="https://by2.uservoice.com/t2/ID/web/ID/track.js?_=TIMESTAMP&amp;s=1&amp;c=__uvSessionData0&amp;d=HASH"></script>
  <script type="text/javascript" async="" src="//widget.uservoice.com/CODE.js"></script><script async="" src="//www.google-analytics.com/analytics.js"></script>
  <script
    src="/Scripts/jquery-2.2.1.js"></script>

    <script src="/Scripts/plugins/cldrjs-0.4.7/dist/cldr.js"></script>
    <script src="/Scripts/plugins/cldrjs-0.4.7/dist/cldr/event.js"></script>
    <script src="/Scripts/plugins/cldrjs-0.4.7/dist/cldr/supplemental.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/number.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/plural.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/message.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/currency.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/date.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/relative-time.js"></script>
    <script src="/Scripts/plugins/globalize-1.1.2/dist/globalize/unit.js"></script>
    <script src="/Scripts/plugins/jquery-validation-1.15.1/dist/jquery.validate.js"></script>
    <script src="/Scripts/plugins/jquery-validation-unobtrusive-3.2.6/jquery.validate.unobtrusive.js"></script>
    <script src="/Scripts/plugins/jquery-ajax-unobtrusive-3.2.4/jquery.unobtrusive-ajax.js"></script>
    <script src="/Scripts/plugins/jquery-validation-globalize-1.0.0/jquery.validate.globalize.js"></script>

    <script src="/Scripts/plugins/jquery-ui-1.11.4/jquery-ui.js"></script>

    <script src="/Content/bootstrap-3.3.7/js/bootstrap.js"></script>

</head>

【问题讨论】:

    标签: globalize jquery-globalize cldr


    【解决方案1】:

    我相信这与您的切片有关...有一种情况是您返回null,这就是Globalize.load 所抱怨的(它需要一个普通对象,例如{},但它却得到了null)。

    【讨论】:

    • 我发现了问题,我不得不删除该行,console.log("JSONs loaded") 但问题仍然存在,我不断触发此错误“JavaScript 运行时错误:E_INVALID_PAR_TYPE:无效value 参数(空)。应为字符串。”
    • 您对哪些网址的回复是undefined?我认为如果你使用return (typeof result === 'undefined' ? {} : result[0]); 你会绕过这个问题,这至少对于断言错误发生在那里很有用,然后你可以恢复并找到哪个 url 没有返回 json。
    【解决方案2】:

    问题来自console.log 在arguments 中附加了一个项目undefined

    我通过以下方式纠正了错误:

    1. 正在删除 , console.log("JSONs loaded")
    2. 修改 return (typeof result === 'undefined' ? null : result[0]); by return result[0];

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 2018-04-26
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2011-09-21
      • 2013-12-02
      相关资源
      最近更新 更多