Tag: Ajax

jQuery ajax成功callback函数定义

我想用jQuery ajax从服务器检索数据。 我想把成功的callback函数定义放在.ajax()块之外,如下所示。 那么我需要像下面这样声明variablesdataFromServer ,以便我能够使用成功callback中返回的数据吗? 我见过大多数人在.ajax()块中定义成功callback。 那么下面的代码是否正确,如果我想定义外部成功callback? var dataFromServer; //declare the variable first function getData() { $.ajax({ url : 'example.com', type: 'GET', success : handleData(dataFromServer) }) } function handleData(data) { alert(data); //do some stuff }

为什么jQuery的内存泄漏太严重了?

这是我上周发布的一个问题的后续: 简单的jQuery Ajax调用在Internet Explorer中泄漏内存 我喜欢jquery语法及其所有不错的function,但是我一直遇到一个通过ajax调用泄漏内存来自动更新表格单元的页面。 所以我创build了两个简单的testing页面进行实验。 两页都会每隔1秒做一次ajax调用。 每次Ajax调用成功后,计数器递增并更新DOM。 脚本在1000个周期后停止。 一个使用jQuery的Ajax调用和更新DOM。 另一个使用Yahoo API作为ajax,并执行document.getElementById(…)。innerHTML来更新DOM。 jquery版本严重泄漏内存。 运行在IE7的XP Home上,从9MB开始,到48MB左右,内存一直呈线性增长。 如果我注释掉更新DOM的行,它仍然在32MB,表明即使是简单的DOM更新泄漏大量的内存。 非jQuery版本的启动和结束大约9MB,无论是否更新DOM。 有没有人有一个很好的解释是什么导致jquery泄漏如此严重? 我错过了什么明显的? 有没有我不知道的循环引用? 或者jquery只是有一些严重的内存问题? 这是leaky(jquery)版本的来源: <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load('jquery', '1.4.2'); </script> <script type="text/javascript"> var counter = 0; leakTest(); function leakTest() { $.ajax({ url: '/html/delme.x', type: 'GET', success: incrementCounter }); } function incrementCounter(data) { if […]

Javascript的正则expression式返回true ..然后false ..然后true ..等

我在写一个表单的validation有一个奇怪的问题。 这是一个input旁边的“检查用户名”button。 input的默认值是用户名,例如'betamax'。 当我按'检查用户名'它传递正则expression式并发送用户名到服务器。 服务器的行为如预期,并返回“2”告诉JavaScript,他们正在提交自己的用户名。 然后,当我再次点击button,正则expression式失败。 显然,因为正则expression式失败,所以没有任何东西被发送到服务器。 如果我再次按下button,正则expression式通过,然后用户名被发送到服务器。 我从字面上不知道会做什么这样做! 对我来说完全是无稽之谈! 编辑:我已经testing了在Firefox和Chrome(Mac)的问题 这是我的代码: $j("#username-search").click(checkUserName); function checkUserName() { var userName = $j("#username").val(); var invalidUserMsg = 'Invalid username (a-zA-Z0-9 _ – and not – or _ at beginning or end of string)'; var filter = /^[^-_]([a-z0-9-_]{4,20})[^-_]$/gi; if (filter.test(userName)) { console.log("Pass") $j.post( "/account/profile/username_check/", { q: userName }, function(data){ if(data […]

CORS是跨域AJAX请求的安全方式吗?

在阅读CORS(跨源资源共享)之后,我不明白它如何提高安全性。 如果发送了正确的ORIGIN头,则允许跨域AJAX通信。 作为一个例子,如果我发送 ORIGIN: http : //example.com 服务器检查这个域是否在白名单中,如果是,则为: Access-Control-Allow-Origin:[在此处收到url] 被送回,连同回应(这是简单的情况,也有前瞻性的请求,但问题是一样的)。 这真的很安全吗? 如果有人想要收到这些信息,伪造一个ORIGIN标题看起来像是一件非常简单的事情。 此外,该标准还指出,如果Access-Control-Allow-Origin不正确,则在浏览器中执行策略,阻止响应。 显然,如果有人试图获取这些信息,他不会使用标准浏览器来阻止它。

如何拦截不同的JS库所产生的所有AJAX请求

我正在用不同的JS库(AngularJS,OpenLayers,…)构build一个Web应用程序,并且需要拦截所有AJAX响应,以防万一logging的用户会话过期(响应回到401 Unauthorized状态),以将他redirect到login页面。 我知道AngularJS提供interceptors来pipe理这样的场景,但是无法find一种方法来实现OpenLayers的这种注入请求。 所以我select了一个香草JS方法。 在这里我find了这段代码 (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { this.addEventListener("readystatechange", function() { console.log(this.readyState); // this one I changed }, false); open.call(this, method, url, async, user, pass); }; })(XMLHttpRequest.prototype.open); …我调整了它,看起来像预期的行为(只在最后的谷歌浏览器进行testing)。 因为它修改XMLHTTPRequest的原型,我想知道这可能会导致多么危险,或者如果它可能会产生严重的性能问题。 顺便说一下,会有任何有效的select? 更新:如何拦截请求,然后才能发送 以前的技巧工作正常。 但是如果在同一情况下你想在发送请求之前注入一些头部呢? 请执行下列操作: (function(send) { XMLHttpRequest.prototype.send = function(data) { // in this case I'm injecting an access […]

为什么在通过Ajax提交时使用表单标签?

哲学问题: 说我有一个需要 JavaScript和一个现代浏览器的networking应用程序,所以渐进增强不是一个问题。 如果我的表单是通过JavaScript构build的,而且我的数据更新都是通过ajax POSTs&PUT完成的,那么真的有什么理由将我的控件包装在表单标签中吗? 如果我仍然要使用标签,出于语义或结构的原因,是否有任何理由有行动和方法的参数,我会忽略? 这种感觉就像是从一个早期的时代一直延续到我身上。

jQuery ajax()使用成功,错误和完成与.done(),.fail()和always()

问题 : 我们应该如下改变我们的编码吗? .done()和success: ,. .fail()和error:和.always()和complete:之间有区别吗? 序言 : 我正在做一个jQuery.ajax调用,这也是我过去成功完成的。 像这样的东西: $.ajax( { url: someUrl, type: 'POST', data: someData, datatype: 'json', success: function (data) { someSuccessFunction(data); }, error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); } }); 在快速浏览某些文档时,我遇到了一个参考文献,指出成功,错误和完整的callback在jQuery 1.8中已被弃用。 要准备好代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。 因此,我们应该开始编码这样的代码: $.ajax( "example.php" ) .done(function (data) { someSuccessFunction(data); }) .fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }) .always(function() […]

在Ajax调用之后使用Django模板呈现JSON对象

我一直在试图了解在Django中执行Ajax的最佳方法是什么。 通过阅读我在这里和那里的东西,我收集到的常见过程是: 使用一些JavaScript库(例如jQuery )制定你的Ajax调用,在Django中build立一个URL模式,捕获这个调用并将它传递给一个视图函数 在Python视图函数中检索您感兴趣的对象,并以JSON格式或类似的方式将它们发送回客户端(通过使用内置的序列化程序模块或simplejson ) 在JavaScript中定义一个callback函数,接收JSON数据并parsing它们,从而创build需要显示的任何HTML。 最后,JavaScript脚本将HTML留在应该保留的地方。 现在,我还没有得到是如何Django模板相关的所有这一切? 显然,我们并没有充分利用模板的力量。 理想情况下,我认为传回一个JSON对象和一个模板名称是很好的,这样数据可以迭代并创build一个HTML块。 但是也许我在这里完全错了… 我发现的唯一资源是这个方向(769),但我还没有尝试过。 显然,在这种情况下会发生什么事情,就是所有生成的HTML都在服务器端创build,然后传递给客户端。 JavaScriptcallback函数只需将其显示在正确的位置即可。 这是否会导致性能问题? 如果没有,即使没有使用上面的代码片断,为什么不直接在后端使用Python而不是前端格式化HTML? 非常感谢! 更新:请使用片段942,因为它是上面的一个增强版本! 我发现inheritance支持这种方式效果更好

上传前获取文件大小

在input文件的变化事件中使用AJAX / PHP上传文件之前,有什么办法找出文件的大小?

jQuery上传进度和AJAXfile upload

好像我没有清楚地传达我的问题。 我需要发送一个文件(使用AJAX),我需要使用Nginx HttpUploadProgressModule获取文件的上传进度。 我需要一个很好的解决这个问题的方法。 我曾尝试使用jquery.uploadprogress插件,但是我发现自己不得不重写大部分内容,以使其在所有浏览器中运行,并使用AJAX发送文件。 我所需要的是执行此操作的代码,并且需要在所有主stream浏览器(Chrome,Safari,FireFox和IE)中运行。 这将是更好的如果我能得到一个解决scheme,将处理多个file upload。 我正在使用jquery.uploadprogress插件从NginxHttpUploadProgressModule获取文件的上传进度。 这是一个Facebook应用程序的iframe中。 它在Firefox中工作,但在Chrome / Safari中失败。 当我打开控制台,我得到这个。 Uncaught ReferenceError: progressFrame is not defined jquery.uploadprogress.js:80 任何想法我将如何解决? 我想在完成时使用AJAX发送文件。 我将如何执行? 编辑: 我很快就需要这一点,这一点很重要,所以我要在这个问题上提出100点的奖励。 第一个回答的人将获得100分。 编辑2: Jake33帮我解决了第一个问题。 第一个人如果用ajax发送文件也会得到100分。