【问题标题】:append php in jquery在jquery中附加php
【发布时间】:2011-03-13 11:22:24
【问题描述】:

我正在尝试使用 jquery 动态创建一个 div 来显示错误消息。我可以使用 append() 轻松创建 HTML,但我需要调用 php 变量才能显示内容。如果我像往常一样尝试添加 php 开始和结束标签,则 append 方法不会按预期运行,并从行中间输出一个看似随机的部分。 我该如何克服这个问题?

这是我拥有的 jquery 代码:

$(document).ready(function() {
    var errors_php = "<?php  echo validation_errors('<li>','</li>'); ?>";
    $('#wrapper').append("<div id='errors'><ul>"+errors_php+"</ul></div>");
    $('#errors').slideDown('slow');
});

注意:validation_errors() 函数是一个codeigniter 方法。顺便说一句,如果我从 append() 中删除 errors_php 变量,它会按预期工作,显示一个空的 div。

编辑:

生成的代码是:

<div id="errors"><ul>',''); ?&gt;</ul></div>

【问题讨论】:

  • 还有什么输出到屏幕上?
  • 对不起@wowo_999 我不关注。浏览器正在解析上面生成的代码并按预期显示它(使用一点 css!)。
  • @John Rasch 我刚刚查了这个问题,这正是我想要做的。不幸的是,我从答案中不明白他们是如何解决的。我以前从未使用过 json 数据。我应该把那段代码放在哪里?!?!
  • 页面加载时var errors_php = "&lt;?php echo validation_errors('&lt;li&gt;','&lt;/li&gt;'); ?&gt;"; 行呈现什么?我的意思是,如果您进入查看源代码并查看该行,您会看到什么?

标签: php jquery append


【解决方案1】:

确保 PHP 的输出正确转义。如果错误代码中有引号 ("),则会导致问题。尝试将 validation_errors 包装为 addslashes:

$(document).ready(function() {
    var errors_php = "<?php echo addslashes(validation_errors('<li>','</li>')); ?>";
    $('#wrapper').append("<div id='errors'><ul>"+errors_php+"</ul></div>");
    $('#errors').slideDown('slow');
});

【讨论】:

  • 我喜欢你的想法,但我只是尝试了一下,得到了相同的输出。错误中不应有任何引号或类似内容。
  • 你能贴出validation_errors 的代码吗?可能有哪些错误示例?
  • validation_errors() 是一个函数,它是 codeigniter 框架的一部分。它在表单提交后输出预定义的错误消息,例如。必填字段为空等。问题不在这个函数上,它正在研究如何让 jquery 发送浏览器 php。
  • 在 javascript 函数之外,运行以下命令:&lt;?php print_r(validation_errors('&lt;li&gt;','&lt;/li&gt;')); ?&gt; 它打印出什么?
【解决方案2】:

根据您的评论:

我刚刚查了一下那个问题 这正是我想要做的。 不幸的是,我不明白 他们如何解决的答案。 我以前从未使用过 json 数据。 我应该把那段代码放在哪里?

JSON data 只是 JavaScript 对象表示法,因此如果您将 JavaScript 变量设置为 JSON 值,它实际上会重新创建首先被序列化为 JSON 的对象的副本。

var errors_php = "<?php  echo validation_errors('<li>','</li>'); ?>";

应该是:

var errors_php = <?php echo json_encode(validation_errors('<li>','</li>')); ?>;

【讨论】:

    【解决方案3】:

    你不能在 javascript 文件中运行 PHP 代码,但是你可以在 PHP 文件中运行 html&JS 代码。

    Javascript 在用户的浏览器中运行。

    PHP 在服务器上运行。它读取您的 .php 文件,运行它找到的 PHP,将 HTML 发送到浏览器,然后退出。

    不存在允许您从 Javascript 代码中运行 PHP 代码的“远程诡异动作”。

    要在 PHP 文件中运行 html&JS 代码,请执行以下操作:

    $('.addctr').append(
    '<div class="row">' +
    '<div class="form-group col-sm-5">' +
    '<label class="control-label">Parameter</label>' +
    '<select class="form-control" name="asset_search">' +
    '<?php foreach ($dd["asset_search"] as $asset_search) { ?>' +
    '<option <?= set_select("asset_search", $asset_search["text"]) ?>><?= $asset_search["value"] ?></option>' +
    '<?php } ?>' +
    '</select>');
    

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 2011-09-26
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      相关资源
      最近更新 更多