2013-07-04 46 views
0

应用 - 2(Java和Rails)的Rails request.xhr?不工作

导轨 - 3.0.3

红宝石 - 1.8.7

客户 - 使用jQuery从Java应用程序

Firebug的Ajax调用 - 显示它实际上是一个Ajax XHR请求(XHR选项卡)

Server - Rails - request.xhr?

任何宝石丢失为Ajax响应(只从Java PP AJAX请求)

我的宝石列表如下:

abstract (1.0.0) 
actionmailer (3.0.3) 
actionpack (3.0.3) 
activemodel (3.0.3) 
activerecord (3.0.3) 
activeresource (3.0.3) 
activesupport (3.0.3) 
arel (2.0.4) 
builder (2.1.2) 
bundler (1.3.4) 
cgi_multipart_eof_fix (2.5.0) 
columnize (0.3.6) 
crack (0.1.8) 
daemons (1.1.0) 
delayed_job (2.1.2) 
erubis (2.6.6) 
fastthread (1.0.1) 
gem_plugin (0.2.3) 
hoptoad_notifier (2.3.12) 
httparty (0.6.1) 
i18n (0.4.2) 
linecache (0.46) 
mail (2.2.10) 
mime-types (1.16) 
mongrel (1.1.5) 
mysql2 (0.2.6) 
nokogiri (1.4.4) 
polyglot (0.3.1) 
rack (1.2.1) 
rack-mount (0.6.13) 
rack-test (0.5.6) 
rails (3.0.3) 
railties (3.0.3) 
rake (0.8.7) 
rbx-require-relative (0.0.9) 
ruby-debug (0.10.4) 
ruby-debug-base (0.10.4) 
ruby-xslt (0.9.7) 
rubygems-bundler (1.1.1) 
rubyzip (0.9.4) 
rvm (1.11.3.6) 
thor (0.14.6) 
treetop (1.4.9) 
tzinfo (0.3.23) 
xml-simple (1.0.12) 

我的控制器代码是

def index 
    if request.xhr? 
     logger.debug " Ajax request yes" 
    else 
     logger.debug " Ajax request false" 
    end 
    respond_to do |format| 
     format.html 
     format.js 
    end 
end 

jquery的代码是:

$.ajax({ 
      type: "GET",    
      url:"someurl" 

      cache:false, 
      success: function(data) { 
       alert('success');       

      }, 
      error: function(jqXHR, textStatus, errorThrown){ 
       alert(jqXHR.responseText); 
      } 

服务器日志

Started GET "/mozart_content?id=phyp10084_sa102&dt=20130704132018&api=a3aee3fa-567e-11df-be64-7779fa786bb0&sign=WBCbzBY0GDAP6mQVLxcFZX-ES10%3D" for 192.168.42.27 at Thu Jul 04 18:49:44 +0530 2013 
    Processing by MozartContentController#index as HTML 
    Parameters: {"sign"=>"WBCbzBY0GDAP6mQVLxcFZX-ES10=", "api"=>"a3aee3fa-567e-11df-be64-7779fa786bb0", "dt"=>"20130704132018", "id"=>"phyp10084_sa102"} 
    Ajax request false 
Rendered mozart_content/index.html.erb within layouts/application (149.3ms) 
Completed 200 OK in 155ms (Views: 154.3ms | ActiveRecord: 0.0ms) 
+0

请发布您的控制器代码 – bluehallu

+0

添加控制器代码 – rails007

+0

您可以发布服务器日志中的一个请求吗? – bluehallu

回答

0

你正在做一个POST不指定数据。如果您想要执行GET或将数据添加到请求,请将类型更改为GET。 JS

+0

已更改。但仍然Rails给request.xhr false? – rails007

0

是它时,代替本公布thorugh $就可以检查request.format ==一些时间给假。

从Firefox的文档,使用XMLHttpRequest对象进行

HTTP请求是受 同源策略。特别是,这意味着使用XMLHttpRequest的网络应用程序只能向其加载的域名(而不是其他域名)发出HTTP请求。

+0

这就是为什么我让他发布他的服务器日志,但它清楚地表明服务器正在处理请求作为HTML。 – bluehallu

+1

如果format.js放在format.html上,它会将其处理为js –

+0

不起作用:调用NoMethodError - 私有方法格式#

0

这是问题...阿贾克斯不跨域工作: