我正在尝试在不修改后端的情况下对旧网站表单进行AJAXify。最初,后端会在收到表单后用“302移动”重定向到“谢谢”页面进行响应。
现在,当我尝试使用jQuery$提交表单时。ajax调用时,表单数据被成功提交,但“302 Moved”重定向似乎被浏览器取消,jQuery不知道发生了什么。
我的问题是,不管发生什么,美元。ajax调用返回一个错误,状态为0,因此我无法区分成功提交和错误。
有没有办法阻止浏览器尝试遵循重定向,或者至少返回正确的响应代码?(我用的是Chrome。)
您的后端应用程序可能具有相对重定向,而jquery ajax可能无法处理该重定向。在这种情况下,位置头将不包括域名,只包括相对路径。对一些人来说(我不清楚)它可能导致同源政策问题的原因。有趣的是,将重定向更改为绝对路径应该可以解决这个问题。在jQuery 1.11.1上测试。
理论上的ajax调用:
$.ajax({
'url': '/your-url',
'method': 'post',
'data': form.serialize()
}).done(function(data) {
// something
}).fail(function(jqXHR, textStatus, errorThrown) {
// another something
});
所以在 /your-url控制器中,你可能有类似的东西:
return $this->response->redirect('//same.domain/path');
或
return $this->response->redirect('/path');
第一个可以。第二个不是。
关键是您可能需要改变后端,但只需要一点点。如果您真的不想和/或以不同的方式处理它,您不需要检查请求是否是XmlHttpRequest。
这能帮你找到正确的方向吗?
$.ajax({
type: "GET",
url: url,
data: data,
complete: function(e, xhr, settings){
if(e.status === 200){
console.log(e.responseText);
}else{
console.log("error");
}
}
});
我认为不,你不能不改变后端。你必须改变响应头,让Ajax知道/理解该做什么。如果你做了重定向,你必须改变头,因为Ajax调用响应不会这样做。
问题内容: 我在wp主题中设置了基本的wordpress ajax示例。触发是由modernizr.js检查页面上的媒体查询来完成的。 我已经本地化了脚本并使其入队。 最后处理请求的函数是: 这总是使我的响应为0(无属性),我也不知道为什么。PS这都是本地的。 问题答案: 一切都必须在这里匹配: PHP JS
请求: 主机:Tempuri.org用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:37.0)Gecko/20100101 Firefox/37.0接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受-语言:en-US,en;q=0.5接受-编码:gzip,deflate来源:http
当您以“正常”方式停止或重新启动tomcat时,正在处理的http请求会发生什么情况?它们将被处理直到响应完成还是http线程被中断?有没有办法配置优雅的停车?
问题内容: 08 nov 608 nov 5 08 nov 4 08 nov 308 nov 1 08 nov 2 为什么我得到: HTTP request Response Assertion:Test failed:text expected to contain /302/” error in “Assertion Results” 问题答案: 这是因为您没有在断言中检入正确的“要测试的字段
问题内容: 我正在创建Web应用程序的功能,用户可以在其中“编辑”记录并使用jQuery通过AJAX提交表单。 当某人正在“ ajax编辑”一条记录并且他们使用有效数据提交表单时,我发送200状态代码,该状态代码触发jQuery AJAX Success函数,然后忽略响应正文(因为它成功了,所以我不需要它),然后折叠表格。 当存在表单验证错误时,我将发送400状态代码以触发jQuery错误方法,并
我的Ajax调用没有执行web方法,正在返回状态代码“302找到”。检查跟踪表明,该方法实际上是作为“选项”发送的?? 当web方法在aspx文件中时,这一切都在工作。当我把代码转换成UserControl时,我不得不把它移动到asmx。 Ajax调用: PLService中的Web方法 请求: 主持人:坦普里。org用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;rv