我正在尝试使用jquery动态创建div来显示错误消息。我能够使用append()来轻松创建HTML,但我需要调用php变量才能显示内容。如果我只是尝试像我通常那样添加php开启和关闭标签,那么追加方法的行为并不像预期的那样,并从行的中间输出一个看似随机的部分。 我怎样才能克服这个问题?
这是我拥有的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>
答案 0 :(得分:3)
确保正确转义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');
});
答案 1 :(得分:2)
根据你的评论:
我只是抬起那个问题而已 正是我想要做的。 不幸的是,我不明白 他们如何解决它的答案。 我之前从未使用过json数据。 我应该把这段代码放在哪里?
JSON data只是JavaScript Object Notation,因此如果您将JavaScript变量设置为JSON值,它将基本上重新创建一个首先序列化为JSON的对象的副本。
var errors_php = "<?php echo validation_errors('<li>','</li>'); ?>";
应该是:
var errors_php = <?php echo json_encode(validation_errors('<li>','</li>')); ?>;
答案 2 :(得分:0)
您不能在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>');