Tag: xmlhttprequest

可以用xhr.onloadreplacexhr.onreadystatechange用于AJAX调用吗?

我只需要支持主要的现代浏览器(IE10 +,FF,Chrome,Safari) 我可以做这个替代,因为我想简化我的代码库: 从: xhr.onreadystatechange = function () { if (this.readyState === 4) { if (this.status === 200) { o.callback(xhr.responseText); } else { return false; } } else { return false; } }; 至: xhr.onload = function (test) { o.callback(xhr.responseText); }; 我不认为MDN文件在这方面是明确的。 澄清: 我select不使用框架。

Rails在CORS预检选项请求中响应404

我使用Rails 4创build了一组服务,我正在使用JavaScript浏览器应用程序。 交叉原点GETS工作正常,但我的POST失败了预检选项检查404错误。 至less,我想这就是发生了什么事情。 这些错误出现在控制台中。 这是Mac上的Chrome 31.0.1650.63。 OPTIONS http://localhost:3000/confessor_requests 404 (Not Found) jquery-1.10.2.js:8706 OPTIONS http://localhost:3000/confessor_requests No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. jquery-1.10.2.js:8706 XMLHttpRequest cannot load http://localhost:3000/confessor_requests. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. main.html:1 我已经search了高和低的指示启用CORS,我很难过。 通常的build议似乎是把这样的东西放在应用程序控制器,我做了。 […]

XMLHttpRequest将POST更改为OPTION

我有这个代码: net.requestXHR = function() { this.xhr = null; if(window.XMLHttpRequest === undefined) { window.XMLHttpRequest = function() { try { // Use the latest version of the activex object if available this.xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e1) { try { // Otherwise fall back on an older version this.xhr = new ActiveXObject("Mxsml2.XMLHTTP.3.0"); } catch(e2) { //Otherwise, throw […]

如何在rails下设置webrick中的access-control-allow-origin?

我写了一个小的Rails应用程序,通过xmlhttprequests将内容提供给另一个站点,这些站点将在另一个域中运行(不可能让它们在同一台服务器上运行)。 我知道我需要在我的Rails服务器上设置访问控制允许来源,以允许请求的网页访问这个材料。 这似乎是相当不错的文件如何做到这一点与Apache,这可能是我将使用一旦我部署网站的服务器。 虽然我正在开发,但我希望只使用webrick,因为我习惯使用rails。 有没有一种方法来configurationwebrick在轨道内提供适当的http头?

什么时候应该XMLHttpRequest的onerror处理程序启动

理解XMLHttpRequest的处理程序有点问题。 规范说这个关于error handling程序 : error [Dispatched …]请求失败时。 load [Dispatched …]请求成功完成时。 问题是,“请求失败”是什么意思? 那可能是 该请求根本不能被发出(例如连接被拒绝等错误),或者 上面加上服务器返回了一个错误代码(例如404) 另外,我想知道这是否意味着错误和onload不应该同时开火。 这个引用指出应该根据status码执行onerror处理程序,并根据readyState执行onload 。 这表明它们不是相互排斥的,但是,我不认为这是一个权威的信息。 我在问,因为使用最新的Opera快照,我发现onload即使在404状态码上也被触发。 我知道testingstatus是一个肯定的select,但是我想知道这是我必须要做的每个规范还是只是一个解决scheme,在Opera中的错误。

如何在使用formdata时在XMLHttpRequest中添加标题数据?

我试图实现一个file uploadAPI,在这里给出: Mediafirefile upload 我成功地能够上载Post数据和获取数据 ,但是不知道如何发送x-filename属性,这个属性是API指南中给出的Header数据 。 我的代码: xmlhttp=new XMLHttpRequest(); var formData = new FormData(); formData.append("Filedata", document.getElementById("myFile").files[0]); var photoId = getCookie("user"); // formData.append("x-filename", photoId); //tried this but doesn't work // xmlhttp.setRequestHeader("x-filename", photoId); //tried this too (gives error) [edited after diodeous' answer] xmlhttp.onreadystatechange=function() { alert("xhr status : "+xmlhttp.readyState); } var url = "http://www.mediafire.com/api/upload/upload.php?"+"session_token="+getCookie("mSession")+"&action_on_duplicate=keep"; xmlhttp.open("POST", url); // […]

如何使用XHR onProgress函数使用压缩/ gzip压缩的内容?

我曾经见过一堆类似的问题,但是我还没有find一个完全描述我当前问题的问题,所以这里是: 我有一个页面,通过AJAX加载一个大(0.5到10 MB)的JSON文档,以便客户端代码可以处理它。 一旦文件加载,我没有任何问题,我不指望。 但是,下载需要很长时间,所以我尝试利用XHR Progress API来呈现进度条,以向用户指示文档正在加载。 这工作得很好。 然后,为了加快速度,我尝试通过gzip和deflate压缩服务器端的输出。 这也有很大的收获,但是,我的进度条停止了工作。 我查了一下问题,发现如果一个正确的Content-Length头没有被请求的AJAX资源发送, onProgress事件处理程序不能按预期工作,因为它不知道下载有多远它是。 发生这种情况时,名为lengthComputable的属性在事件对象上设置为false 。 这是有道理的,所以我试图明确地设置输出的未压缩和压缩的长度。 我可以validation头文件正在发送,我可以validation我的浏览器知道如何解压缩内容。 但是onProgress处理程序仍然报告lengthComputable = false 。 所以我的问题是: 有没有办法使用AJAX Progress API来压缩/缩小内容? 如果是的话,我现在做错了什么? Chromenetworking面板中显示资源的方式如下: 这些是相关的请求标头,显示请求是AJAX, Accept-Encoding设置正确: GET /dashboard/reports/ajax/load HTTP/1.1 Connection: keep-alive Cache-Control: no-cache Pragma: no-cache Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.22 (KHTML, like […]

了解Ajax请求花了多长时间完成

找出特定$.ajax()请求花了多长时间的好方法是什么? 我想获取这些信息,然后将其显示在某个地方的页面上。 回答??:::: 我是新来的JavaScript,如果你不想内联“成功”function,这是最好的,因为它将是一个更大的function,这是一个很好的方法来做到这一点? 我觉得我正在过分复杂的事情…: makeRequest = function(){ // Set start time var start_time = new Date().getTime(); $.ajax({ async : true, success : getRquestSuccessFunction(start_time), }); } getRquestSuccessFunction = function(start_time){ return function(data, textStatus, request){ var request_time = new Date().getTime() – start_time; } }

如何debugging通过AJAX加载的Javascript(特别是jQuery)

我已经改变了我的编码风格,更复杂的项目,以最近“按需”加载页面(和他们的embedded式脚本)。 但是,像这样加载时,很难debugging这些脚本: jQuery.get('/myModularPage', function(html){ /* insert the loaded page into the DOM */ }); 要么 $('#some-container').load('/myOtherPage'); 这些脚本运行完美,但如果我正在debugging,我怎样才能在这些dynamic加载的页面和脚本中设置断点?

使用Ajax XmlHttpRequest上传文件

嗨,我想用这个代码xmlhttprequest发送文件。 <script> var url= "http://localhost:80/…."; $(document).ready(function(){ document.getElementById('upload').addEventListener('change', function(e) { var file = this.files[0]; var xhr = new XMLHttpRequest(); xhr.file = file; // not necessary if you create scopes like this xhr.addEventListener('progress', function(e) { var done = e.position || e.loaded, total = e.totalSize || e.total; console.log('xhr progress: ' + (Math.floor(done/total*1000)/10) + '%'); }, false); if ( […]