为什么ajax POST工作但GET没有Rails json请求

时间:2015-04-27 04:03:45

标签: jquery ruby-on-rails ajax json post

我正在理解ajax如何与Rails一起工作。我有一个方法,根据在html选择中选择的选项,我加载另一个选择与第一个选择的值。如果重要的话,这些选择在_partial中。我无法让控制器打印任何我的“放置”信息。我使用GET时的语句,响应是"。错误字符串:SyntaxError:意外的标记<。状态:parsererror"。但是当我把它改成POST时奇迹般地一切正常。

这是路线:

get '/mycontroller/get_list_with_ajax'

JS:

$.ajax({
    url: "/mycontroller/get_list_with_ajax",
    data: {
        "groupName": groupName,
        "authenticity_token": $('meta[name="csrf-token"]').attr('content')
    },
    type: "GET",
    dataType: "json",
    timeout: constants.AJAX_TIMEOUT,
    cache: false,
    success:function(result) {
    ...

控制器:

  def get_list_with_ajax
     puts "HELLO!"
     ...
     result = { 'response' => 'SUCCESS',
                'more_options' => ['example'] }
     render :json => result
  end 

编辑:我注意到当我使用POST时,响应内容类型是' application / json'和GET将其设置为&text; / text。我尝试了所有3个:

 response.headers["Content-Type"] = "application/json"
 response.content_type = 'application/json'
 render :json => result, :content_type => 'application/json'

但是他们都没有在Chrome控制台或curl -LI中更改结果。不知道为什么。

如果有人能指出我的方向非常感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

我的工作是将rails方法移动到不同的控制器中。我将它们移动到/ a_different_controller / get_list_with_ajax并且它有效。为什么?我不知道。

我尝试使用标题:{“Accept”:“application / json},GET url不包含任何特殊字符,只包含字符串和身份验证令牌, 组名= MY-GROUP&安培; authenticity_token = QqbP57iTw .....

如果拥有更多Rails经验的人比我想发表评论更好。