jquery数据存储
‘壹’ jquery 本地存储大量数据,并支持后续操作的方法!
你的数据有多大?几千行的话 gzip 一下也不会花超过几秒(大概不需要),不需要甚么特别的处理。再大的话就视乎实际数量和所需的处理方式,简单的 localstorage 复杂的自己看看是用自己的方法处理(一般较快较省记忆)还是去用 js 实作的数据库(一般较方便)。这也是个编程阶段,自己多试试看不同的处理方法那才会有长进,别人给的意见再好都不是你自己的经验。
‘贰’ jquery, "使用data方法可以避免在DOM中存储数据" 这句话什么意思
使用data方法可以避免在DOM中存储数据,有些前端开发者喜欢使用HTML的属性来存储数据:
$('selector').attr('alt', 'data being stored');
//之后可以这样读取数据:
$('selector').attr('alt');
使用”alt”属性来作为参数名存储数据其实对于HTML来说是不符合语义的,我们可以使用jQuery的data方法来为页面中的某个元素存储数据。
$('selector').data('参数名', '要存储的数据');
//之后这样取得数据:
$('selector').data('参数');
这个data方法能让你自己明明数据的参数,更语义更灵活,你可以在页面上的任何元素存储数据信息。
网上找的,好吧,我只能跟楼上一个回答,是的,还真就是这个意思
‘叁’ jquery, "使用data方法可以避免在DOM中存储数据" 这句话什么意思
使用data方法可以避免在DOM中存储数据,有些前端开发者喜欢使用HTML的属性来存储数据:
$('selector').attr('alt',
'data
being
stored');
//之后可以这样读取数据:
$('selector').attr('alt');
使用”alt”属性来作为参数名存储数据其实对于HTML来说是不符合语义的,我们可以使用jQuery的data方法来为页面中的某个元素存储数据。
$('selector').data('参数名',
'要存储的数据');
//之后这样取得数据:
$('selector').data('参数');
这个data方法能让你自己明明数据的参数,更语义更灵活,你可以在页面上的任何元素存储数据信息。
网上找的,好吧,我只能跟楼上一个回答,是的,还真就是这个意思。
‘肆’ jQuery的$.Ajax()返回的数据如何才能保存给全局变量
要存全局变量的坏处就是怕使用的过程中,你的值还没拿到,而你又调用了这个变量。造成意想不到的麻烦。
建议存session、cookie、localStorage、sessionStorage里面都可以
然后定义个方法去拿就可以了
varget=function(){
returnlocalStorage.getItem("a")||"";
}
vara=get();
console.log(a);//应该是伪空
setTimeout(function(){
console.log(a);
},5000);//等待5秒再试试。应该拿到了
$.ajax({
....//省略多行
success:function(d){
localStorage.setItem("a",d);
}
});
‘伍’ jquery data可以存多大数据
jquery中data() 方法向被选元素附加数据,或者从被选元素获取数据。
jquery中data() 方法向被选元素附加数据,或者从被选元素获取数据。这使我们通过HTML自定义属性,操作数据,显得非常方便。通常我们也会通过给html自定义属性这样的做法,来存储和操作数据。在jquery中也给我们
提供了data(name,value)这样的方法,来非常方便的实现。有了data()这个方法,你就可以很方便的在一个html标签中添加data-*这样的自定义属性。接下来,就data()方法简单的做下了解。
以下是摘自w3school中对data用法的说明:
data方法从元素中读取数据的语法:
$(selector).data(name) name:可选。规定要取回的数据的名称。
如果没有规定名称,则该方法将以对象的形式从元素中返回所有存储的数据。
data方法从元素中存储数据的语法:
$(selector).data(name,value)
name:必需。规定要设置的数据的名称。
value:必需。规定要设置的数据的值。
当然,我们在这里,也可以把一个包含键/值对的对象,向被选元素添加数据。语法如下:
$(selector).data(object)
object:必需。规定包含名称/值对的对象。
Html代码如下:
data方法之读取数据:
<div id="divName" data-name="lichaoqiang">单个数据:data-name="lichaoqiang"</div>
<div id="divJson" data-user='{"user_id":20141111,"user_name":"lichaoqiang"}'>存储json数据:{"user_id":20141111,"user_name":"lichaoqiang"}</div>
<script type="text/javascript">
console.log($("#divName").data("name")); //通过name输出单个数据
console.log($("#divJson").data("user").user_name); //通过name输出json数据
‘陆’ jquery data数据存储在哪儿
jquery中data() 方法向被选元素附加数据,或者从被选元素获取数据。 jquery中data() 方法向被选元素附加数据,或者从被选元素获取数据。这使我们通过HTML自定义属性,操作数据,显得非常方便。
‘柒’ jquery.data为什么可以避免内存泄露内存泄露是怎么产生的
存泄漏可以定义为一个应用,由于某些原因不再需要的内存没有被操作系统或者空闲内存池回收。编程语言支持多种管理内存的方式。这些方式可能会减少内存泄漏的几率。然而,某一块内存是否没有用到实际上是一个不可判定的问题。换句话说,只有开发者可以弄清一块内存是否可以被操作系统回收。某些编程语言提供了帮助开发者做这个的特性。其他一些语言期望开发者可以完全明确什么时候一块内存是没被使用的。
1.意外的全局变量
JavaScript的目标是开发一种看起来像Java但足够自由的被初学者使用的语言。JavaScript自由的其中一种方式是它可以处理没有声明的变量:一个未声明的变量的引用在全局对象中创建了一个新变量。在浏览器的环境中,全局对象是window。也就是说:
123
function foo(arg) {bar = "this is a hidden global variable";}
实际上是:
123
function foo(arg) {window.bar = "this is an explicit global variable";}
如果bar是仅在foo函数作用域内承载引用,并且你忘记用var来声明的变量,一个意外的全局变量就被创建了。在这个例子中,泄漏一个单一字符串不会有太大害处,但这的确是不好的。
另一种意外全局变量被创建的方式是通过this:
1234567
function foo() {this.variable = "potential accidental global";}// Foo called on its own, this points to the global object (window)// rather than being undefined.foo();
为了阻止这种错误发生,在你的Javascript文件最前面添加'use strict;'。这开启了解析JavaScript的阻止意外全局的更严格的模式。
全局变量的一个注意事项:
即使我们谈了不明的全局变量,仍然存在很多代码被显式的全局变量填充的情况。这是通过定义不可收集的情况(除非清零或重新赋值)。特别的,用来临时存储和处理大量信息的全局变量会引起关注。如果必须用全局变量来存储很多数据,在处理完之后,确保对其清零或重新赋值。 一个在与全局连接上增加内存消耗常见的原因是缓存)。 缓存存储重复被使用的数据。为此,为了有效,缓存必须有其大小的上限。飙出限制的缓存可能会因为内容不可被回收,导致高内存消耗。
2.被遗忘的计时器或回调
在JavaScript中setInterval的使用相当常见。其他库提供观察者和其他工具以回调。这些库中大多数,在引用的实例变成不可访问之后,负责让回调的任何引用也不可访问。在setInterval的情况下,这样的代码很常见:
12345678
var someResource = getData();setInterval(function() {var node = document.getElementById('Node');if(node) {// Do stuff with node and someResource.node.innerHTML = JSON.stringify(someResource));}}, 1000);
这个例子表明了跳动的计时器可能发生什么:计时器使得节点或数据的引用不再被需要了。代表node的对象将来可能被移除,使得整个块在间隔中的处理不必要。然而,处理函数,由于间隔仍然是活跃的,不能被回收(间隔需要被停掉才能回收)。如果间隔处理不能被回收,它的依赖也不能被回收。那意味着可能存储着大量数据的someResource,也不能被回收。
观察者情况下,一旦不被需要(或相关的对象快要访问不到)就创建明确移除他们的函数很重要。在过去,这由于特定浏览器(IE6)不能很好的管理循环引用(下面有更多相关信息),曾经尤为重要。现如今,一旦观察对象变成不可访问的,即使收听者没有明确的被移除,多数浏览器可以并会回收观察者处理函数。然而,它保持了在对象被处理前明确的移除这些观察者的好实践。例如:
12345678910111213
var element = document.getElementById('button');function onClick(event) {element.innerHtml = 'text';}element.addEventListener('click', onClick);// Do stuffelement.removeEventListener('click', onClick);element.parentNode.removeChild(element);// Now when element goes out of scope,// both element and onClick will be collected even in old browsers that don't// handle cycles well.
一条关于对象观察者及循环引用的笔记
观察者和循环引用曾经是JavaScript开发者的祸患。这是由于IE垃圾回收的一个bug(或者设计决议)出现的情况。IE的老版本不能检测到DOM节点和JavaScript代码间的循环引用。 这是一个通常为观察到的保留引用(如同上面的例子)的观察者的典型。 也就是说,每次在IE中对一个节点添加观察者的时候,会导致泄漏。这是开发者在节点或空引用之前开始明确的移除处理函数的原因。 现在,现代浏览器(包括IE和MS Edge)使用可以剪裁这些循环和正确处理的现代垃圾回收算法。换言之,在使一个节点不可访问前,调用removeEventLister不是严格意义上必须的。
像Jquery一样的框架和库做了在处置一个节点前(当为其使用特定的API的时候)移除监听者的工作。这被在库内部处理,即使在像老版本IE一样有问题的浏览器里面跑,也会确保没有泄漏产生。
3. 超出DOM引用
有时存储DOM节点到数据结构中可能有用。假设你想要迅速的更新一个表格几行内容。存储每个DOM行节点的引用到一个字典或数组会起作用。当这发生是,两个对于同个DOM元素的引用被留存:一个在DOM树中,另外一个在字典中。如果在将来的某些点你决定要移除这些行,需要让两个引用都不可用。
var elements = {button: document.getElementById('button'),image: document.getElementById('image'),text: document.getElementById('text')};function doStuff() {image.src = 'http://some.url/image';button.click();console.log(text.innerHTML);// Much more logic}function removeButton() {// The button is a direct child of body.document.body.removeChild(document.getElementById('button'));// At this point, we still have a reference to #button in the global// elements dictionary. In other words, the button element is still in// memory and cannot be collected by the GC.}
对此的额外考虑,必须处理DOM树内的内部节点或叶子节点。假设你在JavaScript代码中保留了一个对于特定的表格内节点(一个td标签)的引用。在将来的某个点决定从DOM中移除这个表格,但是保留对于那个节点的引用。直观的,会假设GC会回收除那个节点之外的每个节点。在实践中,这不会发生的:这个单节点是那个表格的子节点,子节点保留对父节点引用。换句话说,来自JavaScript代码的表格元素的引用会引起在内存里存整个表格。当保留DOM元素的引用的时候,仔细考虑下。
4.闭包
一个JavaScript开发的关键点是闭包:从父级作用域捕获变量的匿名函数。很多开发者发现,由于JavaScript runtime的实现细节,有以一种微妙的方式泄漏的可能,这种特殊的情况:
123456789101112131415
var theThing = null;var replaceThing = function () {var originalThing = theThing;var unused = function () {if (originalThing)console.log("hi");};theThing = {longStr: new Array(1000000).join('*'),someMethod: function () {console.log(someMessage);}};};setInterval(replaceThing, 1000);
这个代码片段做了一件事:每次replaceThing被调用的时候,theThing获取到一个包括一个大数组和新闭包(somMethod)的新对象。同时,变量unused保留了一个有originalThing(theThing从之前的对replaceThing的调用)引用的闭包。已经有点疑惑了,哈?重要的是一旦一个作用域被在同个父作用域下的闭包创建,那个作用域是共享的。这种情况下,为闭包somMethod创建的作用域被unused共享了。unused有一个对originalThing的引用。即使unused从来没被用过,someMethod可以通过theTing被使用。由于someMethod和unused共享了闭包作用域,即使unused从来没被用过,它对originalThing的引用迫使它停留在活跃状态(不能回收)。当这个代码片段重复运行的时候,可以看到内存使用稳步的增长。GC运行的时候,这并不会减轻。本质上,一组关联的闭包被创建(同unused变量在表单中的根节点一起),这些闭包作用域中每个带了大数组一个非直接的引用,导致了大型的泄漏。
‘捌’ jquery实现点击文字可编辑并修改保存至数据库
这个方法网上可以查到很多,但是好多只有点击文字编辑并保持,但是没有完整的代码写怎么保存到数据库。因为本人才疏学浅,费啦好长时间才写好把修改的内容只用一条sql语句保存到数据库,今天在这里和大家分享
这是运行图片
这是前台页面
03.aspx页面
复制代码
代码如下:
<table
id="MyTable"
cellspacing="1"
cellpadding="3">
<asp:Repeater
ID="reorderInFo"
runat="server">
<ItemTemplate>
<tr
style="text-align:
left;">
<td
width="70"
height="40"
id="OrderName">
订单名称:
</td>
<td
colspan="5"
class="caname"
id="OrderName1">
<%#Eval("OrderName")%>
</td>
</tr>
<tr
style="text-align:
left;">
<td
width="70"
height="40"
id="ID_Proct">
产品类型:
</td>
<td
class="caname"
id="ID_Proct1">
<%#Eval("ID_Proct")%>
</td>
<td
width="40"
id="OrderState_Send">
状态:
</td>
<td
class="caname"
id="OrderState_Send1"
><%#Eval("OrderState_Send")%>
</td>
<td
width="40"
id="OrderQty">
印量:
</td>
<td
class="caname"
id="OrderQty1"
><%#Eval("OrderQty")%>
</td>
</tr>
<tr>
<td
width="70"
height="60"
id="SendAddress">
收货信息:
</td>
<td
colspan="5"
class="caname"
id="SendAddress1"
><%#Eval("SendAddress")%>
</td>
</tr>
<tr
style="text-align:
left;">
<td
width="70"
height="50"
id="OrderMoney_Total">
总金额:
</td>
<td
colspan="5"
class="caname"
id="OrderMoney_Total1"
><%#Eval("OrderMoney_Total")%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
这是js
03.js
复制代码
代码如下:
$(function
()
{
//获取class为caname的元素
$(".caname").click(function
()
{
var
td
=
$(this);
var
txt
=
$.trim(td.text());
var
input
=
$("<input
type='text'value='"
+
txt
+
"'/>");
td.html(input);
input.click(function
()
{
return
false;
});
//获取焦点
input.trigger("focus");
//文本框失去焦点后提交内容,重新变为文本
input.blur(function
()
{
var
newtxt
=
$(this).val();
//判断文本有没有修改
if
(newtxt
!=
txt)
{
td.html(newtxt);
//不需要使用数据库的这段可以不需要
//var
Order_Id
=
$("#ID_Order").text();
var
updateCol
=
$.trim(td.prev().attr("id"));//我重点要说的是着一句:td.prev();表示本td的上一个td。这句代码的意思是你所点击的td的上一个td的id(如果不明白可以看前面的03.aspx页面)。
//ajax异步更改数据库,加参数date是解决缓存问题
url
=
"../test/03.ashx?caname="
+
newtxt
+
"&updateCol="
+
updateCol
+
"&date="
+
new
Date();
//使用get()方法打开一个一般处理程序,data接受返回的参数(在一般处理程序中返回参数的方法
context.Response.Write("要返回的参数");)
//数据库的修改就在一般处理程序中完成
$.get(url,
function
(data)
{
//
if
(data
==
"1")
{
//
alert("该类别已存在!");
//
td.html(txt);
//
return;
//
}
//
alert(data);
alert("修改成功");
td.html(newtxt);
});
复制代码
代码如下:
<p><span
style="font-size:14px;">这是一般处理程序页面<span
style="font-family:Times
New
Roman;">
03.ashx</span></span></p><p>
<%@
WebHandler
Language="C#"
Class="_03"
%></p>
复制代码
代码如下:
<p>using
System;
using
System.Web;
using
System.Data.SqlClient;</p><p>public
class
_03
:
IHttpHandler
{
public
void
ProcessRequest
(HttpContext
context)
{
context.Response.ContentType
=
"text/plain";
int
OrderId
=
5;</p><p>
string
newOrderName
=
context.Request.QueryString["caname"];//获取用户修改后的文字
string
updateCol
=
context.Request.QueryString["updateCol"];//获取用户修改的本td的上一个td的id的值(这个id与数据库中的列名相同)
string
sql
=
"update
eoPrintOrder
set
"
+
updateCol
+
"
<a
target="_blank"
href="mailto:=@name">=@name</a>
where
<a
target="_blank"
href="mailto:Id_order=@id';//">Id_order=@id";//</a>通过这一条sql语句,就可以对数据库进行修改
SqlParameter[]
pams
=
{
new
SqlParameter("@name",newOrderName),
new
SqlParameter("@id",OrderId)
};
string
data
=
DscySFL.DbHelp.ExecuteCommand(sql,pams
).ToString();
context.Response.Write(data);
}
public
bool
IsReusable
{
get
{
return
false;
}
}</p><p>}</p>
‘玖’ html+jquery+ajax可以将表单数据存储到服务器的xml文件里吗
不可以
你要往服务器写东西,就必须有服务器端的程序在那里写啊。
网页都是在用户端运行的。
‘拾’ jquery 浏览器有哪些存储数据的方式
cookie存储数据,客户存储数据。