【问题标题】:jQuery append php html string returned by Codeigniter's controllerjQuery 追加 Codeigniter 控制器返回的 php html 字符串
【发布时间】:2015-08-22 06:43:26
【问题描述】:

我有 Codeigniter 的控制器在用户登录时返回的字符串数组。 一些字符串是 html 格式。当用户完成事件时,我想将这些字符串附加到 html 元素。

这里是控制器返回的php变量中的html字符串示例

$form_dropdown = form_dropdown('selCat_GP[]', $subcats2,'0', 'class="selCat_GP"');
                $Dropdown_GP = '<div class="tr">'
                                    . '<div class="td">Category :</div>'
                                    . '<div class="td">'. $form_dropdown .'</div>'
                                    . '<div class="td">Sub Category :</div>'
                                    . '<div class="td">'
                                    .   '<select class="selSubCat_GP" name="selSubCat_GP[]">'
                                    .       '<option value="0" selected="true">-Select a category first-</option>'
                                    .   '</select>'
                                    . '</div>'
                                    . '<div class="td">Score :</div>'
                                    . '<div class="td"><input class="score" name="score_GP[]" value="0" type="number" size="1" step="10" min="0" max="100" maxlength="2"/>&nbsp;&nbsp;<a href="#" id="btnRemove">Remove&nbsp;[-]</a></div>'
                            . '</div>';

而我在 jQuery 中所做的是:

jQuery('#preference'+preference).append(<?php echo json_encode($Dropdown_GP); ?>);

但它给了我这个错误

我尝试添加单引号和双引号,但它给了我

Uncaught SyntaxError: Unexpected token ILLEGAL
    jQuery('#preference'+preference).append('
    <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
jQuery('#preference'+preference).append("
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

您如何使用 jquery 回显 php html 字符串并将其附加到视图中的 html 元素(当触发事件时)?

我知道我可以使用 ajax post 从服务器请求数据,而不是事先返回它。只是因为会经常请求相同的数据,所以我不希望给服务器更多的工作。我只需要加载一次,然后在用户请求时显示它。

【问题讨论】:

  • 您好像忘记在 $.append 语句中添加引号
  • 我尝试过单引号和双引号,但它们不起作用

标签: javascript php jquery html codeigniter


【解决方案1】:

你错过了单引号。

jQuery('#preference'+preference).append('<?php echo json_encode($Dropdown_GP); ?>'); 

【讨论】:

  • 它不起作用。它返回一个不同的错误:Uncaught SyntaxError: Unexpected token ILLEGAL。 jQuery('#preference'+preference).append("
  • 我在您的评论中看到双引号而不是单引号。
  • json_encode($Dropdown_GP) 中可能存在一些问题。用警报测试它,看看你得到了什么。它在你的截图中说未定义的变量对吗?
【解决方案2】:

你缺少引号,我刚试过:

$('#header').append('<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">Stackoverflo,ooo,ooow</div> ');

在这个 SO 页面上(将 #preferences 替换为 #header),它可以正常工作。

请再次检查您尝试附加的字符串是否被正确引用。

【讨论】:

  • 我已经检查了几次字符串(我在此处发布)。结构合理
  • 啊我错过了,您的 PHP 代码中有未定义变量的警告...请看一下。
  • 但是当我在我的视图文件中回显它时(不是通过 jQuery)它就好了
  • 并且在错误日志中有一个换行符。
    标签只是没有附加到单引号上,而是显示为新行
  • 您正在尝试json_encode($Dropdown_GP); 包含特殊字符的内容?我认为jQuery('#preference'+preference).append('&lt;?php echo $Dropdown_GP; ?&gt;'); 应该可以正常工作
【解决方案3】:

我找到了解决问题的方法。 由于我将 jQuery 脚本放在 body 之后和我的 html 代码之前,所以 jQuery 无法识别 codeigniter 控制器返回的所有变量。 有两个步骤可以解决我的问题:

  1. 将jQuery放在html代码之后,body结束标签之前
  2. 我仍然需要使用 json_encode(..) 来避免 html 字符串的任何断行,并且它使用时没有任何单引号或双引号。

谢谢大家的回答和cmets

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签