Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将系统值传递给javascript的最佳方式_Javascript_Html_Language Agnostic_Generic Programming - Fatal编程技术网

将系统值传递给javascript的最佳方式

将系统值传递给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映射字典和模板中

将不应该呈现给用户的对象和类别ID或其他系统变量从服务器传递到浏览器的最有效方法是什么

假设我有一个项目列表,我可以通过javascript对每个项目进行处理,例如显示工具提示html或通过ajax添加到收藏夹,或显示在地图上。保存工具提示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)越来越不常见,所以它不应该成为一个问题。它实际上不会破裂