我目前正在尝试将大量后端代码转换为前端(以减轻小型系统的负载)。
此时的代码调用 PHP 函数来返回特定信息。 (例如图像位置、字符串、样式)
我正在将此代码转换为其等效的 js,Mysql 中的内容已转换为 JSON 并存储在只读文件中,我正在使用以下代码访问该文件:
<script>
function jsread(tag) {
$.getJSON("/strings.json", function(result){
document.write(result[tag]['value']);
});
}
</script>
我希望该函数在调用它的地方“打印”。 document write 将值写入页面,但停止所有其他加载并仅写入值。
让我非常清楚地说明这一点:我不想想要使用任何需要在此函数之外进行额外调用或引用的内容,这将需要数月的工作,因此无法通过 ID 获取元素我已经查看了有关此主题的许多问题,但没有一个是我可以解决的。我需要一些可以应用于各种情况的东西。否则我只需要使用 PHP 读取 JSON 作为中间妥协。
最佳答案
这里的问题是,document.write()
的行为在所有浏览器中都是疯狂的,因为它直接修改 document
对象并与附事件。因此,最好避免使用此函数,因为每个浏览器对它的定义不同,并且不同的浏览器对相同的代码有不同的效果。
Is there a way to use them without a direct reference?
解决方案
明智的做法是,正如我在评论中所说,最好安全地使用其中一个 jQuery 函数,该函数创建一个 textNode
并以正确的方式插入它,而不影响其他函数:
<script>
function jsread(tag) {
$.getJSON("/strings.json", function(result){
$("body").append(result[tag]['value']);
});
}
</script>
如果您想做一些事情,例如使用占位符并做一些事情,那么您可以尝试提供如下内容:
$(function () {
var data = "Dummy Data, that would probably get returned from the getJSON";
// Inside the Success function, do this:
$("span.placeholder-of-the-json").replaceWith(data);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#"><span class="placeholder-of-the-json">This gets replaced</span></a>
关于javascript - PHP逻辑到Javascript前端转化成html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198544/