JQuery:参数:硬编码字符串vs ajax检索字符串

时间:2012-07-02 12:42:08

标签: javascript jquery

我正在尝试预先填充JQuery Token Input

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函数吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

使用第一种方法,你传递一个JSON字符串,而不是你在第二种方法中的有形JS对象。

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

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