Tag: http

jQuery .load()等到内容加载完毕

如何防止jQuery $(‘body’).load(‘something.php’); 从更改任何 DOM直到来自something.php (包括图像,js)的所有内容都完全 加载 – 让我们说一些实际的内容是: Hello world 而something.php内容是: image that loads for 10 seconds 20 js plugins 在触发.load()函数之后,什么都不应该发生,直到图像js文件被完全加载, THEN立即改变内容。 可能会出现一些预加载器,但它不是问题的主题。 [编辑] – – – – – – – – – – – – – – – – – – – – – – – – ———————– 我的解决方案是css代码(css在dom构建之前始终加载),具有跨浏览器不透明度0。 .transparent{ -moz-opacity: 0.00; opacity: 0.00; […]

HTTP请求的内容长度>正文大小

我正在管理一个网站,该网站在过去几个月通过使用MVC 3.0 ASP.net构建的IIS 7.5运行良好。 当我们的AJAX POST请求(通过jQuery触发)因发布的JSON被截断而失败时,我们时不时会遇到问题。 到目前为止我们发现的是,对于所有这样的请求,请求的“Content-Length”标头包含的数据多于我们实际获得的请求数据。 我们已经在web.config中将maxRequestLength设置为51200,我相信maxAllowedContentLength的值有一个非常大的默认值(我们没有在我们的配置中设置它)。 我还有一个失败的请求,“内容长度”低至7301(字节),但我们设法只获得了2179个字节。 所以我并不怀疑这会达到任何限制。 请求有问题请求的标头如下 缓存控制:无缓存 连接:保持活力 Pragma:没有缓存 内容长度:7301 Content-Type:application / json; 字符集= UTF-8; 接受:application / json,text / javascript, / ; Q = 0.01 Accept-Encoding:gzip,deflate Accept-Language:en-us,en; q = 0.5 User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:15.0)Gecko / 20100101 Firefox / 15.0.1 X-Requested-With:XMLHttpRequest 有任何想法吗 ?? 更新 :我已经能够进一步将问题与我们的代码隔离开来。 编写了一个独立的控制器,它接受一个JSON字符串并对其进行反序列化。 如果出现错误,则会记录错误。 当我在50个请求的循环中与150个并发线程并行地触发此控制器时,我得到一些失败,其中该控制器接收的JSON被截断。 […]

摆脱浏览器控制台中的401(未经授权)ajax错误

我正在使用jQuery.ajax调用通过javascript调用api。 如果用户未经过身份validation,则api会回复401,并且我只想为此调用忽略此错误。 我已经尝试了jQuery选项中描述的所有回调选项,但错误仍然在浏览器控制台中弹出(在Firefox和Chrome中)。 以下是触发错误的示例代码: $.ajax({ type: ‘GET’, url: ‘/url-with-auth’, dataType: ‘json’, statusCode: { 401: function (error) { // simply ignore this error console.log(error); } }, complete: logall, error: function () { // simply ignore this error console.log(error); }, async: false }).fail(function () { // ignore the error and do nothing else console.log(“$.get failed!”); }); 这还具有在由.htaccess文件保护的登台机上再次请求用户凭证的副作用,因为浏览器认为用户未被认证,因此在以下请求中用户需要重新输入他的http凭证。 […]

jquery跨域身份validation

我将Jetty服务器配置为允许跨域http请求(allowedOrigins = *),并使用其CrossOriginFilter允许跨域身份validation(allowCredentials = true)。 没有身份validation要求的跨域http请求正常工作。 现在谈到需要身份validation的http调用时,使用JQuery无法解决问题。 我使用以下代码并遵循此示例: http : //www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/ function login(username, password) { $.ajax({ type: “GET”, contentType: “application/json”, dataType: “json”, url: url, beforeSend: function(xhr) { var base64 = Base64.encode(username + “:” + password); xhr.setRequestHeader(“Authorization”, “Basic ” + base64); xhr.withCredentials = true; }, error: function(data){ alert(“error”); }, success: function(data){ alert(“success”); } }); 在HTTPFox中,我看到以下对服务器的请求: OPTIONS […]

使用带有jQuery的Location标头在POST后重定向

我想使用jQuery 1.7的Location标头重定向到目标。 我的代码看起来像这样 $(‘#creationLink’).click(function(){ $.ajax({ type: ‘POST’, url: ‘/’, success: function(data, textStatus, xhr) { window.location = xhr.getResponseHeader(“Location”); } }) }); ……但它不起作用。 xhr.getResponseHeader(“Location”)为空。 HTTP标头: POST / HTTP/1.1 Host: localhost:9000 X-Requested-With: XMLHttpRequest Content-Length: 0 HTTP/1.1 302 Found Content-Type: text/plain; charset=utf-8 Location: http://localhost:9000/vIRdD0PdWp4/bearbeiten Content-Length: 0 如何使用位置标题重定向?

CORS问题:获取错误“No’Access-Control-Allow-Origin’标题存在”实际存在时

我怀疑为我的应用程序提供服务的后端非常重要,但是如果你关心,我会使用带有Rails 4.0应用程序的机架 。 使用jQuery,我向我的应用程序发送一个PATCH请求,如下所示: $.ajax({ url: “http://example.com/whatever”, type: “PATCH”, data: { something: “something else” } }) 当我从Chrome触发此调用时,我看到一个成功的OPTIONS请求输出,它从我的服务器返回这些标头: Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:accept, content-type Access-Control-Allow-Methods:GET, PUT, PATCH, OPTIONS Access-Control-Allow-Origin: http://sending-app.localhost:3000 Access-Control-Expose-Headers: Access-Control-Max-Age:15 然后我看到一个PATCH请求出去,这引发了这个错误: XMLHttpRequest无法加载http://example.com/whatever 。 请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此不允许Origin’http://sending-app.localhost:3000 ‘访问。 我尝试从PATCH切换到PUT ,结果相同。 这对我没有任何意义。 这是怎么回事? 更新:我的config / application.rb 我认为标题告诉了整个故事,但由于人们感到困惑,这是我的config/application.rb文件,这是Rails的rack-cors插件的配置方式: config.middleware.use Rack::Cors do allow do origins ‘*’ resource ‘*’, :headers => :any, :methods […]

jquery修改url获取参数

我有一个这样的URL: http://google.de/test.php?a=b&c=d&e=f 我知道只需修改一个GET参数:( c是“h”而不是“d”) http://google.de/test.php?a=b&c=h&e=f 并重定向到新url。 所有其他GET参数应该保持不变。 我怎么会这样做?

Access-Control-Allow-Methods不允许DELETE

我正在尝试使用jQuery从Chrome发送跨源DELETE请求。 但是,如果在开发人员控制台中记录以下错误消息,则会失败: XMLHttpRequest无法加载http://actual/url/here 。 Access-Control-Allow-Methods不允许使用DELETE方法。 javascript代码在localhost上运行,如下所示: $.ajax({ type: “DELETE”, url: “http://actual/url/here”, xhrFields: { withCredentials: true } }); 这会导致发送此类飞行前请求: OPTIONS http://actual/url/here HTTP/1.1 Host: actual Connection: keep-alive Access-Control-Request-Method: DELETE Origin: null User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 Access-Control-Request-Headers: accept Accept: */* Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8 响应看起来像这样: HTTP/1.1 200 OK […]

使用HTTP PUT通过Jquery和Rails 3发送JSON

HTTP PUT并不完全是跨浏览器,因此Rails(我使用的是Rails 3)支持使用POST并传递_method查询参数。 这很好,但在发送JSON时它似乎不起作用。 例: $.ajax({ url: window.location.pathname, type: ‘POST’, contentType: ‘application/json’, data: JSON.stringify({_method:’PUT’, page:{my_data: 1}), dataType: ‘json’ }); 当Rails看到这个时,它不会识别’_method’覆盖,因为它以JSON格式传递(也许转换是稍后的?)。 Rails返回错误“没有路由匹配…”说它找不到路由(到资源),我假设因为它与REST update = HTTP PUT动词不匹配,我甚至尝试将此附加到URL: ?_method=PUT但得到了相同的结果。 唯一可行的方法是设置HTTP标头: $.ajax({ url: window.location.pathname, type: ‘POST’, contentType: ‘application/json’, data: JSON.stringify({my_data: 1}), dataType: ‘json’, beforeSend: function(xhr){ xhr.setRequestHeader(“X-Http-Method-Override”,”put”); } }); 设置HTTP覆盖标头是最好的方法吗?

为什么浏览器在这里低效地发出2个请求?

我注意到有关ajax和图像加载的奇怪之处。 假设你在页面上有一个图像,并且ajax请求相同的图像 – 人们会猜测ajax请求会到达浏览器缓存,或者它应该至少只发出一个请求,结果图像将转到页面和想要的脚本读取/处理图像。 令人惊讶的是,我发现即使javascript等待整个页面加载,图像请求仍然会发出新请求! 这是Firefox和Chrome中的已知错误,还是jQuery ajax正在做的坏事? 在这里你可以看到问题 ,打开Fiddler或Wireshark并在点击“run”之前将其设置为记录: Hello jQuery(function($) { $(window).load(function() { $.get(‘http://sofzh.miximages.com/javascript/logo-white.png’); }) }); 请注意,在Firefox中,它会发出两个请求,这两个请求都会产生200-OK,并将整个图像发送回浏览器两次。 在Chromium中,它至少在第二次请求时正确获取304,而不是两次下载整个内容。 奇怪的是,IE11下载整个图像两次,而IE9似乎积极地缓存它并下载一次。 理想情况下,我希望ajax根本不会发出第二个请求,因为它正在请求完全相同的URL。 有没有理由在这种情况下css和ajax通常有不同的缓存,就好像浏览器使用不同的缓存存储css vs ajax请求?