2016-05-15 52 views
1

我打了一面墙,因为我只是不知道我应该在谷歌搜索什么:(我实际上玩的是stackoverflow问问题形式为“可能已经有你的问题回答”,但无法找到附近jquery从2 json字符串构建一个复选框形式

我想建立使用2 JSON字符串从AJAX结果的复选框形式什么。

第一个JSON字符串类别包含所有role_id我只允许是使用形式为 而第二个json字符串角色包含其用户可读的名称roleName

所以,我的HTML (我用twig模板系统等等,我有{{ tags }}

<label class="checkbox-inline"> 
    <input type="hidden" name="has_Read[ role.id ]" value="0" /> 
    <input type="checkbox" name="has_Read[ role.id ]" value="1"> role.roleName 
</label> 

我希望我应该循环到每一个role_id类别 JSON字符串,获取每个id然后将其放在has_Read[ role.id ]上,然后查看角色以提取roleName,以便role_id将其标记为复选框形式

类别

[ 
{"id":77,"category_id":32,"role_id":1,"has_Read":1}, 
{"id":75,"category_id":32,"role_id":99,"has_Read":1} 
] 

角色

[ 
{"id":99,"roleName":"Administrators"}, 
{"id":2,"roleName":"test"}, 
{"id":1,"roleName":"Default User"} 
] 

我从选择器jQuery/JS一旁的非常小的知识,所以我不知道从哪里开始建设的形式,和将这些json字符串传递给php似乎是荒谬的。有人可以教我从哪里开始?

谢谢!

回答

1

第一变换roles成中间散列对象,由角色ID键控:

var roles_ = {}; 
for(var i=0; roles.length; i++) { 
    roles_[roles[i].id] = roles[i]; 
} 

然后每个类别可以给出一个.roleName属性,使用roles_散列作为查找:

for(var i=0; i<categories.length; i++) { 
    categories[i].roleName = roles_[categories[i].role_id].roleName; 
} 

现在,增强型categories阵列包含所有可用数据:

[ 
    {"id":77, "category_id":32, "role_id":1, "has_Read":1, "roleName":"Default User"}, 
    {"id":75, "category_id":32, "role_id":99, "has_Read":1 "roleName":"Administrators"} 
] 
+0

好戏。我将'$ .post()'转移到'$ .ajax()'后检查它,因为显然,我不能将'$ .post()'结果保存到全局变量 –

+0

非常感谢! –

+1

不用担心。请享用。 –