【问题标题】:JSON Unexpected Syntax error - Date parsing / encoding / decodingJSON 意外语法错误 - 日期解析/编码/解码
【发布时间】:2021-12-31 13:15:51
【问题描述】:

我将日期转换为负 1 天,格式为 YYYY-MM-DD 。

这是我减去 1 天的方法。

var date_to_selector         = $(this).parent().find("input[name=date_to]");
var date_to = date_to_selector.val();
    var last_night = new Date(date_to_selector.val().toString());
        last_night.setDate(last_night.getDate()-1);
    var last_night_date = last_night.toLocaleString("en-CA", {year: "numeric", month: "2-digit", day: "2-digit"}).split("/").join("-");

在请求中使用它时,我得到一个语法错误,其中:

 Array
(
    [soapFault] => Array
        (
            [faultcode] => soap:Client
            [faultstring] => Unmarshalling Error: cvc-datatype-valid.1.2.1: '' is not a valid value for 'date'. 
        )

)

在浏览器调试中,我可以以正确的格式看到正确的日期,但是,当发布到 URL 时,它会将 $last_night_date 视为我认为的无效 JSON?

【问题讨论】:

  • 错误信息没有提到 JSON。有些东西应该是日期,但却是一个空字符串。
  • 而且该错误也不是语法错误。
  • 以上是什么,应该是日期的部分不是日期,不管上面是什么
  • 所述错误来自 XML 解析器 - 这里不涉及 JSON。您需要将该字段的 WSDL 从 xsd:data 更改为 xsd:string
  • 如何将上述日期 YYYY-MM-DD 设置为 xsd:data 格式?

标签: javascript php json xml-parsing


【解决方案1】:

这可能是因为

  1. 并不是所有的 Bowser 都支持所有的日期格式。
  2. 浏览器或客户端-服务器之间的格式支持不匹配可能会导致错误。
  3. 您的请求参数解析器抛出错误,因为它不理解您的格式

你应该在字符串化之后发送日期,然后再次解析它。 如果处理多个时区,则将其字符串化为 ISO 格式。

【讨论】:

  • 你能举个例子来说明可能性3吗?我之前使用 strototime 在后端执行此操作 - 成功发布但服务器响应为 500
  • 通过 JS,您可以使用“new Date("2021-11-21").toISOString()”。在 ISO 中更改后发送到服务器。
  • 所以它只接受 toISOString 不接受 toLocaleString?
  • “也许...” 不是答案。这应该是一条评论。
猜你喜欢
  • 2021-11-05
  • 2016-01-29
  • 2014-07-17
  • 2013-06-28
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多