我们能够可靠地重新创build以下场景: 创build一个小的HTML页面,向服务器发出AJAX请求(使用HTTP POST) 断开与networking的连接并重新连接 监视IE发生故障后的报文 在networking连接失败之后,IE做出下一个AJAX请求,但是只在发送HTTP POST时发送HTTP头 (不是主体)。 这会导致服务器上的各种问题,因为这只是部分请求。 谷歌与Bing这个问题,你会发现很多人抱怨使用AJAX或无法解释的AJAX失败的“随机服务器错误”。 我们知道IE(不像大多数其他浏览器)总是以两个TCP / IP数据包的forms发送HTTP POST。 标题和正文分开发送。 在发生故障后, IE只发送头文件 。 所以我的问题是 – 为什么这样做呢? 这似乎是错误的基于HTTP规范和其他浏览器不这样做。 这只是一个错误? 这确实会在任何严重的基于AJAX的Web应用程序中造成混乱。 参考信息: 有一个类似的问题,由HTTP保持活动超时短于1分钟,这里logging: http://us.generation-nt.com/xmlhttprequest-post-sometimes-fails-when-server-using-keep-aliv-help-188813541.html http://support.microsoft.com/default.aspx?kbid=831167 这里是失败之前和之后的数据包捕获: 注意如何发送HTTP头和有效载荷http://img827.imageshack.us/i/beforee.png/ 发生故障后,请注意只发送标题。 IE 从不发送有效负载,服务器最终响应超时。 http://img203.imageshack.us/i/retryt.png/
嗨,我正在开发一个具有如下login对话框的Web应用程序: 用户点击“login” login表单HTML使用AJAX加载,并显示在页面上的DIV中 用户在字段中input用户名/密码并点击提交。 这不是一个<form> – 用户/通过AJAX提交 如果用户/通行证是好的,页面重新加载用户login。 如果用户/通行证不好,页面不会重新加载,但在DIV中出现错误消息,用户再次尝试。 问题在于:浏览器从不提供通常的“保存此密码?是/从不/现在”的提示,它为其他网站提供。 我尝试用'autocomplete ='在<form> ' <form>标签中包装<div>标签,但没有任何区别。 是否有可能让浏览器提供存储密码,而不会对我的loginstream程进行重大修改? 感谢Eric PS添加到我的问题,我肯定与存储密码的浏览器,我从来没有点击“从来没有这个网站”…这是一个技术问题,浏览器没有检测到它是一个login表单,而不是操作员错误:-)
如果一段时间内页面上没有任何活动,我怎么能自动重新加载一个网页?
JQuery和其他框架添加下面的头文件: X-Requested-With:XMLHttpRequest 为什么这需要? 为什么服务器想要以不同于正常请求的方式处理AJAX请求? 更新 :我刚刚find一个真实的例子使用这个头: https : //core.spreedly.com/manual/payment-methods/adding-with-js 。 如果支付处理器没有AJAX请求,则在完成后redirect到原始网站。 当通过AJAX请求时,不进行redirect。
我在寻找具体的信息和例子方面遇到了很多麻烦。 我有我的应用程序附加到div加载与.ajax()调用的一些jQuery UI对话框。 他们都使用相同的设置呼叫: $(".mydialog").dialog({ autoOpen: false, resizable: false, modal: true }); 我只是想让对话框调整到被加载内容的宽度。 现在,宽度只停留在300像素(默认),我得到一个水平滚动条。 据我所知,“autoResize”不再是对话框的选项,当我指定它时没有任何反应。 我试图不写一个单独的函数为每个对话框,所以.dialog("option", "width", "500")是不是真的一个选项,因为每个对话将有不同的宽度。 指定width: 'auto'对话框选项的width: 'auto'只是使对话框占用浏览器窗口宽度的100%。 我有什么select? 我正在使用jQuery 1.4.1与jQuery UI 1.8rc1。 看来这应该是一件非常简单的事情。 编辑:我已经实现了这个kludgy解决方法,但我仍然在寻找更好的解决scheme。
我得到这个错误使用ngResource调用Amazon Web Services上的REST API: XMLHttpRequest无法加载http://server.apiurl.com:8000/s/login?login=facebook 。 对预检请求的响应不会通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin'http:// localhost '因此不被允许访问。 错误405 服务: socialMarkt.factory('loginService', ['$resource', function($resource){ var apiAddress = "http://server.apiurl.com:8000/s/login/"; return $resource(apiAddress, { login:"facebook", access_token: "@access_token" ,facebook_id: "@facebook_id" }, { getUser: {method:'POST'} }); }]); 控制器: […] loginService.getUser(JSON.stringify(fbObj)), function(data){ console.log(data); }, function(result) { console.error('Error', result.status); } […] 我正在使用铬,我不知道还有什么可以解决这个问题。 我甚至将服务器configuration为接受来自origin localhost头文件
如果Ajax请求失败,我想捕获错误并显示相应的消息。 我的代码如下所示,但无法捕捉到失败的Ajax请求。 function getAjaxData(id) { $.post("status.ajax.php", {deviceId : id}, function(data){ var tab1; if (data.length>0) { tab1 = data; } else { tab1 = "Error in Ajax"; } return tab1; }); } 我发现,Ajax请求失败时,“Ajax错误”永远不会执行。 如何处理Ajax错误并在出现错误时显示相应的消息?
如果我有一个用户login到我的网站,他的ID保存在$_SESSION ,并从他的浏览器,他点击一个“保存”button,这将向服务器发出一个AJAX请求。 他的$_SESSION和cookie会保留在这个请求中吗?我可以安全地依赖$_SESSION的id吗?
可能重复: 在jQuery中序列化为JSON 我想发送一个数组作为Ajax请求: info[0] = 'hi'; info[1] = 'hello'; $.ajax({ type: "POST", url: "index.php", success: function(msg){ $('.answer').html(msg); } }); 我怎样才能做到这一点?
在debugging使用AJAX的jQuery应用程序时,我经常需要查看服务返回给浏览器的json。 所以我会把JSON数据的URL放到地址栏中。 这对于ASPNET是很好的,因为在发生编码错误的情况下,我可以在浏览器中看到ASPNET diagostic: 但是,当服务器端代码正常工作,实际返回JSON,IE提示我下载它,所以我看不到响应。 我可以让IE浏览器不这样做,换句话说,只是将它显示为纯文本? 我知道我可以做到这一点,如果我的内容types头设置为text/plain 。 但是这是一个ASPNET MVC应用程序的上下文,当我在我的某个操作方法上使用JsonResult时,它会自动设置响应。 另外我还想保留适当的内容types,而不是仅仅为了支持debugging工作而改变它。