0

我在使用转义的 HTML JSON 数据设置 HTML 属性时遇到问题。

我得到:

未捕获的 SyntaxError:时间戳的数据定义上的意外数字。

我可以在 JSON 中设置整数值吗?如何转义此 JSON 数据以将其放入我的 HTML data-form-data 属性中?

这是我的代码:

<input name="file" type="file" id="uploadinput"
       class="cloudinary-fileupload" data-cloudinary-field="image_upload" 
       data-form-data="" ></input>
<script>
var data = { "timestamp":  2013-05-06 00:20:17.713, 
          "callback": "https://www.mcbjam.com/Scripts/vendor/cloudinary/html/cloudinary_cors.html",
          "signature": "99c35c139c34e2e42ba9e7af251686015c10e5f3", 
          "api_key": "789575445683743" };

$('#uploadinput').attr('src', encodeURI(data));
</script>
4

1 回答 1

2

问题在这里:

"timestamp":  2013-05-06 00:20:17.713

JavaScript 没有日期文字,虽然你没有在那里使用 JSON(你使用的是 JavaScript对象初始化器,这是不同的),但 FWIW JSON根本没有日期。您需要将其作为字符串或数字(例如,自大纪元以来的毫秒数)等提供。

仅供参考,如果你调用encodeURI一个 JavaScript 对象,如果初始化程序不是无效的话,你会得到这个:"%5Bobject%20Object%5D"这不是你想要的。

如果您想获取一个 JavaScript 对象并将其转换为 JSON 字符串,您可以使用它JSON.stringify来执行此操作。如果您将其放入 DOM 属性中,则无需对其进行 URI 编码。所以:

$('#uploadinput').attr('src', JSON.stringify(data));

但同样,JSON 没有日期,因此您必须在上述方法生效之前处理它。

于 2013-05-05T22:37:21.250 回答