from_remote_tag发送的请求HTTP POST代替AJAX XMLHTTP请求

问题描述:

我定义一个提交按钮与form_remote_tag,from_remote_tag发送的请求HTTP POST代替AJAX XMLHTTP请求

<div class="form_row"> 
<% form_remote_tag :url => {:controller => '/group', :action => 'addgroup'}, :update => 'activitypage' do %> 
<%= submit_tag "Add!", :class => "submit" %> 
<% end %> 

我用提琴手并确认轨道代码被译成AJAX请求,

u003Cform action=\"/group/addgroup\" method=\"post\" onsubmit=\"new Ajax.Request('/group/addgroup', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\"\u003E\n  \u003Cinput class=\"submit\" name=\"commit\" type=\"submit\" value=\"Add!\" /\u003E\n \u003C/form\u003E\n \u003C/div\u003E\n\u003C/fieldset\u003E \n\u003C/form\u003E\n"); 

$(“activitypage”)。visualEffect(“highlight”);然而,当我点击按钮时,客户端(IE 8)浏览器实际发送了一个http post请求(见下文)而不是XMLHTTPRequest,因此我的javascript响应被拒绝了。任何想法?提前致谢。

POST http://192.168.1.31:3000/group/addgroup HTTP/1.1 

接受:图像/ GIF,图像/ JPEG,图像/ PJPEG,图像/ PJPEG,应用程序/ x-冲击波闪光,应用/ vnd.ms-PowerPoint中,应用程序/ vnd.ms-Excel中,应用/ msword,application/x-ms-application,application/x-ms-xbap,application/vnd.ms-xpsdocument,application/xaml + xml,application/x-silverlight,/ Referer:http://192.168.1.31:3000/mywebapp Accept-Language :en-us 用户代理:Mozilla/4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152 ; .NET CLR 3.5.30729) 内容类型:application/x-www-form-urlencoded Accept-Encoding:gzip,deflate Host:192.168.1.31:3000 Content-Length:84 Connection:Keep-Alive Pragma:no-cache Cookie:remember_me = 1; _session_id = 2ba880449df83115d15bab29b3c8ab30; authorization_token = 6419794165b8169cfff54053bddb40c9f0405782

谁拒绝了回应?

您的浏览器不应该发送XMLHTTPRequest作为实际的HTTP方法。您的选择仅限于GET和POST(加上HEAD,PUT,DELETE)。

AJAX请求实际上应该设置一个标头,然后得到检查:

'X-Requested-With' = 'XMLHttpRequest' 

用于将GET或POST的实际HTTP方法。

+0

from posting reque st上面,我们可以看到AJAX请求没有发送'X-Requested-With'='XMLHttpRequest' – erwin 2010-08-21 01:28:33

+0

表单是使用javascript提交还是实际发送POST? – 2010-08-21 03:17:23

+0

该表单实际上是制作一个普通的HTTP帖子。 – erwin 2010-08-21 12:17:16

当服务器发回一个javascript页面进行ajax页面替换时,由于页面格式不被接受,浏览器弹出一个文件下载窗口。我预计提交按钮将发送一个Ajax请求与接受JavaScript页面。但它没有。为什么?

以下是收到提交请求后服务器的响应?

HTTP/1.1 200 OK 连接:关闭 日期:星期三,2010年8月18日2点26分31秒GMT 的Set-Cookie:_session_id = 2ba880449df83115d15bab29b3c8ab30;路径=/ 状态:200 OK X-运行时间:0.71081 的ETag: “c4825b6e144b125ce655259083a12eff” 缓存控制:私人,最大年龄= 0,必重新验证 服务器:杂种狗1.1。5 Content-Type:text/javascript;字符集= UTF-8 内容长度:17195

尝试{ Element.update( “activitypage”, “\ u003Ch1 \ u003EGroup \ u003C/H1 \ u003E \ n \ u003Cscript SRC = \”/ Javascript角/原型。 js?1258680672 \“type = \”text/javascript \“\ u003E \ u003C \ script \ u003E \ n \ u003Cscript src = \”/ javascripts/effects.js?1258680672 \“type = \”text/javascript \ u003E \ script \ u003E \ n \ u003Cscript src = \“/ javascripts/dragdrop.js?1258680672 \”type = \“text/javascript \”\ u003E \ u003C/script \ u003E \ n \ u003Cscript src = \“ /javascripts/controls.js?1258680672 \“type = \”text/javascript \“\ u003E \ u003C/script \ u003E \ n \ u003Cscript src = \”/ javascripts/application.js?1258680672 \“type = \”text/javascript \“\ u003E \ u003C \ script \ u003E \ n \ u003Cbr \ u003E \ n \ n \ u003Ctable border = \”0 \“....