在jquery中附加php

Posted

技术标签:

【中文标题】在jquery中附加php【英文标题】:append php in jquery 【发布时间】: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!)。 相关:***.com/questions/168214/… @John Rasch 我刚刚查了这个问题,这正是我想要做的。不幸的是,我从答案中不明白他们是如何解决的。我以前从未使用过 json 数据。我应该把那段代码放在哪里?!?! 页面加载时var errors_php = "&lt;?php echo validation_errors('&lt;li&gt;','&lt;/li&gt;'); ?&gt;"; 行呈现什么?我的意思是,如果您进入查看源代码并查看该行,您会看到什么? 【参考方案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>');

【讨论】:

以上是关于在jquery中附加php的主要内容,如果未能解决你的问题,请参考以下文章

在 jquery 验证中传递附加参数

使用 jQuery 禁用附加下拉列表中的选项

在 jQuery 中附加 [object%20Object] 的 JSON 请求

在附加元素中附加元素在jQuery中不起作用

在 jQuery 中,如何显示以前附加的内容而不再次附加?

如何将 json 从 php 附加到列表视图?