在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>',''); ?></ul></div>
【问题讨论】:
还有什么输出到屏幕上? 对不起@wowo_999 我不关注。浏览器正在解析上面生成的代码并按预期显示它(使用一点 css!)。 相关:***.com/questions/168214/… @John Rasch 我刚刚查了这个问题,这正是我想要做的。不幸的是,我从答案中不明白他们是如何解决的。我以前从未使用过 json 数据。我应该把那段代码放在哪里?!?! 页面加载时var errors_php = "<?php echo validation_errors('<li>','</li>'); ?>";
行呈现什么?我的意思是,如果您进入查看源代码并查看该行,您会看到什么?
【参考方案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 函数之外,运行以下命令:<?php print_r(validation_errors('<li>','</li>')); ?>
它打印出什么?【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章