from_remote_tag发送请求http post而不是ajax XMLHTTP请求

时间:2010-08-18 03:38:05

标签: ruby-on-rails

我使用form_remote_tag定义了一个提交按钮,

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

我使用fiddler并确认rails代码已转换为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( “高亮”);

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

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

接受:image / gif,image / jpeg,image / pjpeg,image / pjpeg,application / x-shockwave-flash,application / vnd.ms-powerpoint,application / vnd.ms-excel,application / msword,application / x-ms-application,application / x-ms-xbap,application / vnd.ms-xpsdocument,application / xaml + xml,application / x-silverlight, / 推荐人:http://192.168.1.31:3000/mywebapp 接受语言:en-us User-Agent: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 0.30729) 内容类型:application / x-www-form-urlencoded Accept-Encoding:gzip,deflate 主持人:192.168.1.31:3000 内容长度:84 连接:保持活力 Pragma:没有缓存 Cookie:remember_me = 1; _session_id = 2ba880449df83115d15bab29b3c8ab30; authorization_token = 6419794165b8169cfff54053bddb40c9f0405782

2 个答案:

答案 0 :(得分:0)

谁拒绝了回复?

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

AJAX请求实际上应该设置一个标题,然后进行检查:

'X-Requested-With' = 'XMLHttpRequest'

使用的实际HTTP方法是GET或POST。

答案 1 :(得分:0)

当服务器发回javascript页面以进行ajax页面替换时,浏览器会弹出一个窗口,用于因未接受的页面格式而下载文件。我希望提交按钮会发送一个接受javascript页面的ajax请求。但事实并非如此。为什么呢?

下面的

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

HTTP / 1.1 200好的 连接:关闭 日期:2010年8月18日星期三02:26:31 GMT Set-Cookie:_session_id = 2ba880449df83115d15bab29b3c8ab30;路径= / 状态:200 OK X-Runtime:0.71081 ETag:“c4825b6e144b125ce655259083a12eff” Cache-Control:private,max-age = 0,必须重新验证 服务器:Mongrel 1.1.5 内容类型:text / javascript;字符集= utf-8的 内容长度:17195

尝试{ Element.update(“activitypage”,“\ u003Ch1 \ u003EGroup \ u003C / h1 \ u003E \ n \ u003Cscript src = \”/ javascripts / prototype.js?1258680672 \“type = \”text / javascript \“\ u003E \ u003C / script \ u003E \ n \ u003Cscript src = \“/ javascripts / effects.js?1258680672 \”type = \“text / javascript \”\ u003E \ u003C / 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 \ “\ 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 \”....