- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1
jQuery 有 ajax 的支持,我应用的情况是:需要在ajax请求的对象中附加自己的数据
本来jQuery ajax 方法中要传递的对象都是事先规划好的,每一个参数都有jQuery的操作意义,如果在应用中需要附加自己的参数,当然要命名新的KEY,比如:伪代码
Js代码
jQuery.ajax({MyData:mydata,其他jqueryajax参数})??
jQuery.ajax({MyData:mydata,其他jqueryajax参数})
?
这里的MyData参数就是自己应用中需要传递的参数对象,且不讨论要传送什么,这个需求有可能有的。
问题:
如果这个MyData的对象是一个复杂的含有循环引用的对象的话,有可能造成与jQuery ajax 方法内部实现的冲突。
因为在jQuery ajax 内部实现中对ajax的参数对象进行了深度的扩展,我们知道javascript的深度扩展实现中要避免循环引用的状况,这种情况会造成死递归循环发生,这一点看jQuery的ajax实现代码就可以知道问题所在:
Js代码
ajax:?function(?s?)?{ ??
????????//?Extend?the?settings,?but?re-extend?s?so?that?it?can?be ??
????????//?checked?again?later?(in?the?test?suite,?specifically) ??
????????var?MyData=s.MyData;//改造后的代码 ??
????????if(MyData)?delete?s.MyData;//改造后的代码 ??
????????s?=?jQuery.extend(true,?s,?jQuery.extend(true,?{},?jQuery.ajaxSettings,?s)); ??
????????if(MyData)?s.MyData=MyData;//改造后的代码 ??
//省略 ??
}??
ajax: function( s ) {
// Extend the settings, but re-extend s so that it can be
// checked again later (in the test suite, specifically)
var MyData=s.MyData;//改造后的代码
if(MyData) delete s.MyData;//改造后的代码
s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
if(MyData) s.MyData=MyData;//改造后的代码
//省略
}
?
可见如果是循环引用的参数附加到ajax方法中必定造成extend的死循环。通过改造后,可以避免这一状况的发生。
开源就是有这点优势。
备注:
这完全是笔者省事的做法,如有其它更标准的方法请明示
jQuery扩展ajaxName,用于ajax提交方法的页面数据获取,根据页面元素的name生成相应的js对象,然后可以把这个对象传给JSON编码库进行编码向后台提交,支持数组,支持.表达式
?
Js代码
/* ?
?*?jQuery?Ajax?By?Name?Plugin ?
?* ?
?*?licensed?under?the?MIT?licenses: ?
?*???/licenses/mit-license.php ?
?* ?
?*?Author?achun?(achun.shx?at?) ?
?*?Create?Date:?2008-6-21 ?
?*?Last?Date:?2008-6-21 ?
?*?Revision:1 ?
?*/??
(function($)?{ ??
/** ?
?*?获取鼠标点击的元素坐标 ?
?*/? ??
$.fn.clickPos?=?function(e){ ??
??var?pos?={x:0,y:0}; ??
??if?(e.offsetX?!=?undefined)?{ ??
????pos.x?=?e.offsetX; ??
????pos.y?=?e.offsetY; ??
??}?else?if?(typeof?$.fn.offset?==?function)?{ ??
????var?offset?=?this.offset(); ??
????pos.x?=?e.pageX?-?offset.left; ??
????pos.y?=?e.pageY?-?offset.top; ??
??}?else?{ ??
?
文档评论(0)