在给定的 php 脚本中,我有以下内容:
<script>
function showMember() {
return $.ajax({ //Perform an asynchronous HTTP (Ajax) request.
type: 'get',
//A string containing the URL to which the request is sent.
url: '<?php echo $this->createUrl('member'); ?>',
...
如果我将它放在 php 文件中,这会起作用。
但这似乎不是组织事物的好方法,我希望将所有这些代码放在一个单独的 .js 文件中。
处理这些情况的正确方法是什么?
最佳答案
我们使用两种方法使在服务器端创建的数据可供客户端访问:
1) '数据传输'对象,由服务器端脚本填充。例如:
PHP:
<?php
$data = [
'urls' => [
'createSomething' => $this->createUrl($from, $something),
// ...
],
'labels' => [
'createSomething' => $this->cms($labelName),
// ..
],
]
?>
<script>
var dto = <?= json_encode($data) ?>;
</script>
JS:
$.ajax(dto.urls.createSomething, {}, function() {
alert(dto.labels.createSomethingSuccess);
}
2) 数据集属性,同样由服务器填充。例如:
PHP:
<button data-target-url="<?= $this->createUrl($from, $something) ?>"
>Something</button>
JS:
$('button[data-target-url]').click(function() {
var targetUrl = $(this).data('targetUrl');
$.post(targetUrl...);
}
对我来说,第二种方法似乎最有用,因为某些与 UI 相关的属性集仍在服务器端计算 - 例如,插件设置。
关于php - 服务器端代码与客户端代码混合 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263087/