将系统值传递给javascript的最佳方式
将不应该呈现给用户的对象和类别ID或其他系统变量从服务器传递到浏览器的最有效方法是什么 假设我有一个项目列表,我可以通过javascript对每个项目进行处理,例如显示工具提示html或通过ajax添加到收藏夹,或显示在地图上。保存工具提示html、数据库id或地理位置的最佳位置是哪里 我能想到的一些选择是:将系统值传递给javascript的最佳方式,javascript,html,language-agnostic,generic-programming,Javascript,Html,Language Agnostic,Generic Programming,将不应该呈现给用户的对象和类别ID或其他系统变量从服务器传递到浏览器的最有效方法是什么 假设我有一个项目列表,我可以通过javascript对每个项目进行处理,例如显示工具提示html或通过ajax添加到收藏夹,或显示在地图上。保存工具提示html、数据库id或地理位置的最佳位置是哪里 我能想到的一些选择是: 每个项目的标记中的一些字典 微格式 内联xml rel属性 带有特定信息的css类名,例如class=“lat-12345 uid-45678” 一个,带有html ID映射字典和模板中
- 每个项目的
标记中的一些字典 - 微格式
- 内联xml
属性rel
- 带有特定信息的css类名,例如
class=“lat-12345 uid-45678”
- 一个
,带有html ID映射字典和模板中的系统值 - 从数据库生成的javascript,通过
包含html ID字典映射字典,模板中包含系统值 - 当我需要更多信息而不仅仅是id时,所有情况下的ajax请求
- 带有html标记内参数的事件处理程序,例如
onmouseover=“tooltip(this,123,'Hello world!”)”
另外,我更喜欢低调的解决方案,而且加载/执行时间也很重要。ASP.NET提供了一种非常方便的方法。您可以简单地编写一个JavaScript对象。我相信其他模板引擎也提供了类似的方法
var person = {
Name : <%= _person.Name %>,
Age : <%= _person.Age %>
};
var-person={
姓名:,
年龄:
};
ASP.NET提供了一种非常方便的方法。您可以简单地编写一个JavaScript对象。我相信其他模板引擎也提供了类似的方法
var person = {
Name : <%= _person.Name %>,
Age : <%= _person.Age %>
};
var-person={
姓名:,
年龄:
};
我更喜欢使用一个AJAX调用来获取您一开始就知道需要的任何数据,这样您就可以在脚本中使用一个简单的JSON对象。当然,如果您发现需要更多信息,您可以通过额外的电话来补充
如果这是不切实际的,那么在
…
标记中对JavaScript对象进行“硬编码”是次好的选择。当然,“硬编码”是从浏览器的角度来看的。实际内容肯定是由服务器端脚本从数据库中编写的。我更喜欢使用一个AJAX调用来获取您一开始就知道需要的任何数据,这样您就可以在脚本中使用一个简单的JSON对象。当然,如果您发现需要更多信息,您可以通过额外的电话来补充
如果这是不切实际的,那么在
…
标记中对JavaScript对象进行“硬编码”是次好的选择。当然,“硬编码”是从浏览器的角度来看的。实际内容肯定是由数据库中的服务器端脚本编写的。也许我遗漏了什么。。。为什么不仅仅是JSON
如何“发送”它(无论是在初始页面加载时作为“javascript”还是通过AJAX或诸如此类的方式)实际上只是一个微不足道的细节,主要取决于数据何时可用。(JSON是合法JavaScript语法的子集。)
那么这只是一个正确转换的问题。当然,如果您考虑到这一点,那么通过将其推送到JSON/JS,您可能会使一些非JS客户端不可互操作。如果确实是这样,为什么不在服务器端执行转换呢
您还可以在HTML中使用任意属性(HTML5规范可能包括“data-*”,这是正式合法的)——虽然技术上不“正确”,但所有主要的web浏览器都会接受可以通过DOM API访问的未知属性。也许我遗漏了一些东西。。。为什么不仅仅是JSON 如何“发送”它(无论是在初始页面加载时作为“javascript”还是通过AJAX或诸如此类的方式)实际上只是一个微不足道的细节,主要取决于数据何时可用。(JSON是合法JavaScript语法的子集。) 那么这只是一个正确转换的问题。当然,如果您考虑到这一点,那么通过将其推送到JSON/JS,您可能会使一些非JS客户端不可互操作。如果确实是这样,为什么不在服务器端执行转换呢
您还可以在HTML中使用任意属性(HTML5规范可能包括正式合法化的“data-*”)——虽然在技术上并不“正确”,但所有主要的web浏览器都会接受可以通过DOM API访问的未知属性。您可以使用的一种方法是自定义属性。我认为您将其称为微格式,但我不能完全确定它们是否是同一事物,因此我在下面写了一个描述 我以前也问过同样的问题,我基本上使用了如下内容:
<div data-pid="1234">
<a href="#" class="add-to-favourites">
<img src="addToFavourites.png" />
</a>
</div>
$("a.add-to-favourites").click(function() {
$.load("/Favourites/Add.php?prodID="+$(this).parent().attr("data-pid"));
});
$(“a.add-to-favorites”)。单击(函数(){
$.load(“/favorites/Add.php?prodID=“+$(this.parent().attr(“数据pid”)”);
});
这应该正是你想要做的。我之所以将pid
放在div
中,而不是a
标记中,是因为您可以将所有其他产品信息放在div
中,用户可以执行其他操作,例如使用数据描述在鼠标上方显示工具提示,或者使用data-geo-x
和data-geo-y
在地图上显示。当然,你可以给它们取任何你想要的名字
支持/接受
这正在成为一种完全被接受的方式来做你想做的事情。HTML5支持这一点,这正是您试图实现的目标
所以HTML5支持它,但HTML4呢
它可能使HTML4无效,但世界正在向更大更好的方向发展。较旧的浏览器(IE6及之前的版本、FF1/2、Opera 7/8/9)越来越不常见,所以它不应该成为一个问题。它实际上不会破裂