我正在理解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中更改结果。不知道为什么。
如果有人能指出我的方向非常感谢,谢谢。
答案 0 :(得分:0)
我的工作是将rails方法移动到不同的控制器中。我将它们移动到/ a_different_controller / get_list_with_ajax并且它有效。为什么?我不知道。
我尝试使用标题:{“Accept”:“application / json},GET url不包含任何特殊字符,只包含字符串和身份验证令牌, 组名= MY-GROUP&安培; authenticity_token = QqbP57iTw .....
如果拥有更多Rails经验的人比我想发表评论更好。