我试图通过在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确实可以工作。但是,我没有回传其他项目。
答案 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');
我在标题中添加了一个修改,以注释的方式说明了它的使用方式,它基本上是静态的,确实没有理由一遍又一遍地将其更改为相同的内容(无论何时触发帖子),因此它使没有任何修改就无法更改该选项。
也就是说,您所提供的关于所需需求的信息很少,这是我能猜到的最好的
欢呼。