如何在json编码的数组中正确传递html?

时间:2018-07-25 17:18:43

标签: javascript php json

我试图通过在php中执行以下操作将值和html字符串从php传递到jquery:

// return the group id and the html
$response = array("grp_leader"=>$group_leader, "grp_html"=>$leader_html);

// return the html  
$return_html = json_encode($response);   

我的客户端代码正在执行以下操作:

       $.post('./group_mgt.php', {function:'edit_grp', group_id:group_id}, function(data) {
            var response = jQuery.parseJSON(data);

            // save the original group leader in a global var
            old_group_leader = response.grp_leader;

            // display the edit dialog
            $('#edit_grp_dialog').dialog('option', 'title', 'Edit Group');
            $('#edit_grp_dialog').response.grp_html.dialog('open');

但是,返回到客户端后,我可以正确获取组ID,但是我的代码然后在最后一行中断。

我进入浏览器调试器,并设置了response.grp_html。但是,显示的指令不起作用。然后,对话框打开命令失败,因为undefined不是对象。

很明显,关于json编码/解码,我没有正确编码,但是不确定是什么。请让我知道我在想什么。

如果我不返回数组并且不对它进行json编码,则html确实可以工作。但是,我没有回传其他项目。

1 个答案:

答案 0 :(得分:1)

最后一行是完全错误的

$('#edit_grp_dialog').response.grp_html.dialog('open');

这表示.response$('#edit_grp_dialog')的函数或属性,不是。所以应该就是

$('#edit_grp_dialog').dialog('open');

现在,剩下的唯一合乎逻辑的事情是$('#edit_grp_dialog')存在并在帖子外部初始化。然后,在帖子(在回调中)之​​后,修改并打开对话框。 (正确吗?)

所以

 $.post('./group_mgt.php', {function:'edit_grp', group_id:group_id}, function(data) {
        var response = jQuery.parseJSON(data);

        // save the original group leader in a global var
        old_group_leader = response.grp_leader;
        //modify the contents of the dialog
        $('#edit_grp_dialog').html(response.grp_html);
        // modify the title of the dialog
        $('#edit_grp_dialog').dialog('option', 'title', 'Edit Group');
         //$('#edit_grp_dialog').dialog('option', 'title', 'Edit Group: '+response.grp_leader;);
         //open the dialog
        $('#edit_grp_dialog').dialog('open');

我在标题中添加了一个修改,以注释的方式说明了它的使用方式,它基本上是静态的,确实没有理由一遍又一遍地将其更改为相同的内容(无论何时触发帖子),因此它使没有任何修改就无法更改该选项。

也就是说,您所提供的关于所需需求的信息很少,这是我能猜到的最好的

欢呼。