JQuery:参数:硬编码字符串与 ajax 检索到的字符串

JQuery: parameter: hard-coded string vs ajax retrieved string

本文关键字:字符串 ajax 检索 编码字符 参数 编码 JQuery      更新时间:2023-09-26

我正在尝试预填充JQuery令牌输入。

var assignUserJson=$('#assignUserJson').val();
console.log(assignUserJson); //[{"id":"1","name":"Andrew"},{"id":"3","name":"John"}]

这是我认为它应该工作的两种方式之间的区别:

$('#assignTask').tokenInput('/users/suggest', {prePopulate: assignUserJson}); // doesn't work  

这有效:

$('#assignTask').tokenInput('/users/suggest', {prePopulate: [{"id":"1","name":"Andrew"},{"id":"3","name":"John"}]}); // works  

为什么?我不应该能够从隐藏的输入字段中获取值并将其传递给tokenInput函数吗?

在第一种方法中,assignUserJson 是一个字符串,而在第二种方法中,它是一个数组对象。对象化第一个应该有效:

$('#assignTask').tokenInput('/users/suggest', {prePopulate: JSON.parse(assignUserJson)});

使用第一种方法,您将传递一个 JSON 字符串,而不是像第二种方法那样传递有形的 JS 对象。

首先需要解析 JSON。这可以在 ECMA5 中本地完成,或者对于较旧的浏览器,可以通过第三方支持完成。

$('#assignTask').tokenInput('/users/suggest', {prePopulate: JSON.parse(assignUserJson)}); // doesn't work