我有一个视图,控制器呈现视图发送一些数据,例如$ sizes。 在视图中我有一个jquery函数,它基于表单post从数据库中检索对象并返回一个json响应。 在回调函数中,我附加了一个resultStr,以便用我从数据库中获取的项更新视图。 问题是我正在使用laravel和刀片,如果脚本与视图分离,刀片也不会被解析。 所以我想,好吧我会让resultStr使用普通的PHP,但它也不起作用。 例如,我将此代码放在回调函数中:
resultStr = resultStr +
"<?php " +
"foreach ($possible_sizes as $size){" +
"print(\" {$size[\"it\"]} \")}" +
" ?>";
$("#results").html(resultStr);
但是我在div中得到的不是数据,而是这一行:
<div id="results">
<!--?php foreach ($possible_sizes as $size){print(" {$size["it"]} ")} ?-->
</div>
问题是:为什么?
script.js中的代码示例
jQuery(function ($) {
$(document).ready(function () {
var form = $('form');
form.submit(function (e) {
e.preventDefault();
$.ajax({
url: form.prop('action'),
type: 'post',
dataType: 'json',
data: form.serialize(),
success: function (data) {
var obj = (data);
var resultStr = "";
for (var i = 0; i < obj.length; i++) {
resultStr = resultStr +
"string to be" +
"inserted in the #results" +
"div and containing php code" +
"to be executed in the view";
}
$("#results").html(resultStr);
}
})
});
});
});
答案 0 :(得分:0)
基于上面的长评论帖,似乎答案是......
您有一个引用.js
文件的PHP页面。在单独的.js
文件中,您有以下内容:
resultStr = resultStr +
"<?php " +
"foreach ($possible_sizes as $size){" +
"print(\" {$size[\"it\"]} \")}" +
" ?>";
$("#results").html(resultStr);
这里有一系列重大问题......
.js
个文件。您可能能够以不同方式进行配置,但我真的不推荐它。将PHP保留在.php
页面中。如果要将值注入JavaScript,请在页面上的script
块中呈现该值,并使用它来调用.js
文件中的功能。.js
文件中处理PHP,这个PHP代码也将是一个巨大的语法错误。 JavaScript不能用于构建这样的PHP代码。 (它可用于构建看起来像 PHP代码的字符串,但在浏览器中这些只是字符串。)首先在服务器上处理PHP代码一次。该代码的结果将作为网页发送到浏览器。从页面在浏览器中加载的那一刻起,PHP就完成。您可以向服务器发出进一步的AJAX请求,以调用进一步的PHP操作并获取这些操作的结果。但是您无法在浏览器中运行PHP代码。