我对xhr返回事件感到迷惑,因为我可以说, onreadystatechange之间没有太大的区别– > readyState == 4和onload,这是真的吗? var xhr = new XMLHttpRequest(); xhr.open("Get", url, false); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { /* do some thing*/ } }; xhr.send(null); 要么 xhr.onload = function() { /* do something */ }
当我的页面上的JavaScript加载一个包含JavaScript对象表示法格式的对象的文本文件时,我在Firefox 3.0.7的错误控制台中收到了一个“格式不正确”的错误。 如果文件只包含JSON对象,则会产生错误。 如果我将这个对象包装在<document> </ document>标记中,它不会产生错误。 请求成功的方式,所以我可以忽略它,但我不希望我的错误日志填满这些消息。 下面是一些示例代码来说明问题。 首先,名为“data.json”的“格式不正确”的文件: { a: 3 } 现在一些代码来加载文件: var req = new XMLHttpRequest(); req.open("GET", "data.json"); req.send(null); 在Firefox错误控制台中会产生以下错误: 不完善 file://path/to/data.json行:1 {a:3} – ^ 如果data.json被修改为: <document>{ a: 3 }</document> 没有错误。 我认为这是抱怨,因为普通的JSON文件不是一个格式良好的XML文档,所以我试图在“发送”调用之前覆盖MIMEtypes,强制它作为纯文本加载,但没有奏效。 var req = new XMLHttpRequest(); req.open("GET", "data.json"); req.overrideMimeType("text/plain"); req.send(null); // Still produces an error! 我将继续将我的JSON数据包装在一个XML文档中,以解决XMLHttpRequest正在执行的任何validation问题,但是我想知道是否有任何方法可以强制它仅仅加载纯文本而不尝试validation它。 或者,除了XMLHttpRequest之外,还有其他的加载数据的方法可以用于纯文本吗?
我如何添加超时到以下脚本? 我希望它显示文字为“超时” 。 var bustcachevar = 1 //bust potential caching of external pages after initial request? (1=yes, 0=no) var loadedobjects = "" var rootdomain = "http://" + window.location.hostname var bustcacheparameter = "" function ajaxpage(url, containerid) { var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject) { […]
这个: function myFunction() { document.write("sup"); } 在html中调用如下所示: <div id="myDiv"> <script>myFunction();</script> </div>t 将一个stringsup添加到myDiv div元素。 这正是我想要的。 但是,这个: function loadFile(uri) { var r = new XMLHttpRequest(); document.write("trying to open: " + uri); r.open('GET', uri, true); r.send(null); r.onreadystatechange = function() { if (r.readyState == 4) { myFunction(); } } } function myFunction() { document.write("sup"); } 这样调用: <div id="myDiv"> <script>loadFile("filename.txt");</script> […]
我试图实现简单的xhr抽象,并试图为POST设置标题时得到此警告。 我认为这可能与在一个单独的js文件中设置标题有关,因为当我将它们放在.html文件的<script>标记中时,它工作正常。 POST请求工作正常,但我得到这个警告,并且很好奇为什么。 我得到这个content-length和connection头的警告,但只有在WebKit浏览器(Chrome 5testing版和Safari 4)。 在Firefox中,我没有得到任何警告,Content-Length头被设置为正确的值,但连接被设置为保持活动,而不是closures,这让我觉得它也忽略了我的setRequestHeader调用和生成它自己的。 我没有在IE中试过这个代码。 这是标记和代码: test.html : <!DOCTYPE html> <html> <head> <script src="jsfile.js"></script> <script> var request = new Xhr('POST', 'script.php', true, 'data=somedata', function(data) { console.log(data.text); }); </script> </head> <body> </body> </html> jsfile.js : function Xhr(method, url, async, data, callback) { var x; if(window.XMLHttpRequest) { x = new XMLHttpRequest(); x.open(method, url, async); […]
根据chrome扩展API如果设置了权限,则应该允许使用XMLHttpRequest对象进行跨源调用: 一个扩展可以与远程服务器通信,只要它首先请求跨源许可。 我正在密切关注该教程,但下面的代码给了我一个错误消息: XMLHttpRequest无法加载http://www.google.com/search?hl=zh-CN&q=ajax 。 Origin chrome-extension:// bmehmboknpnjgjbmiaoidkkjfcgiimbo不被Access-Control-Allow-Origin允许。 我不仅允许向google.com发送请求,而且还向任何网站发送请求,但仍然无法通过。 任何人都可以帮忙吗? 我的清单文件: { "name": "The popup", "version": "0.1", "popup": "popup.html", "permissions": [ "http://*/*", "https://*/*", "https://www.google.com/*", "http://www.google.com/*" ], "browser_action": { "default_icon": "clock-19.png", "default_title": "This is title", "default_popup": "popup.html" } } 实际的通话: function sendRequest() { document.write("Sending request"); var req = new XMLHttpRequest(); req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true); req.onreadystatechange = function() […]
我遇到了一些我们所做的jQuery控件的问题。 假设你有一个下拉列表,允许你input你正在寻找的项目的ID,当你按ENTER键或在文本框中失去焦点时,它会通过jQueryvalidation你input的ID是正确的,如果它没有显示警报“T。 问题是,当一个普通用户input一个无效的值,并通过按下提交button失去焦点,jQuery的发布后,返回表单发送。 有什么办法,我可以检查是否有任何asynchronous请求处理的jQuery,以便我不允许表单提交?
所以根据jQuery的Ajax文档 ,它在发送请求时以查询string的forms序列化数据,但是设置processData:false应该允许我在实体中发送实际的JSON。 不幸的是我很难确定第一,如果这是发生,第二什么样的对象看起来是发送到服务器。 我只知道服务器没有parsing我发送的内容。 当使用http客户端发布对象文字{someKey:'someData'} ,它就可以工作。 但是,当使用jQuery与data: {someKey:'someData'} ,它失败。 不幸的是,当我在Safari中分析请求时,它说消息有效载荷是[object Object] …很好,而在Firefox中,这个post是空白的。 当在Java端logging正文内容时,它实际上得到[object Object]那么如何发送REAL JSON数据呢? 有没有人有一个Java服务序列化请求正文中的JSON数据的经验,从jQuery发送请求? BTW这里是完整的$ .ajax请求: $.ajax({ contentType: 'application/json', data: { "command": "on" }, dataType: 'json', success: function(data){ app.log("device control succeeded"); }, error: function(){ app.log("Device control failed"); }, processData: false, type: 'POST', url: '/devices/{device_id}/control' });
我们正在开发一个带AngularJS和Java Servlets的REST风格的Web服务。 当用户login时,我们的后端发送一个“Set-Cookie”头到前端。 在Angular中,我们通过$cookies (ngCookie – 模块)访问头文件并设置它。 现在,用户login,他可以例如删除一些东西。 所以前端发送GET请求到后端。 因为我们在不同的领域工作,所以我们需要设置一些CORS头文件,Angular在实际的GET请求之前做一个OPTIONS请求: 选项请求: GET请求 我们通过$ http模块在Angular中执行此操作,但它不会发送包含JSESSIONID的cookie。 我怎样才能让Angular发送cookies?
基本上这是一个问题,如何在javascript中dynamic地从HTML中构build一个Document对象?