首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax调用不再工作(401未经授权)

Ajax调用不再工作(401未经授权)
EN

Stack Overflow用户
提问于 2017-10-13 14:08:56
回答 1查看 101关注 0票数 0

下面的代码在我的分支上运行得很好(甚至以前有一些提交),而且奇怪的是,在我检查浏览器之后,我现在得到了js消息:401 (未经授权)

我有一个自动完成的表单,当用户选择一个字段时,它需要从同一个控制器发送要由动作"get_location“来分析的数据。

home_form.js

代码语言:javascript
复制
$(document).ready(function() {
  return $("#search_city").on("change", function() {
    return $.ajax({
      url: "home/get_location",
      type: "GET",
      dataType: "script",
      data: {
        city: $('#search_city').val()
      }
    });
  });

routes.rb

代码语言:javascript
复制
  resources :home, only: [:index] do
    get 'get_location', on: :collection
  end

home_controller.rb

代码语言:javascript
复制
require 'recognize_data'

class HomeController < ApplicationController
  layout "home"
  skip_before_action :authenticate_user!, only: [ :index ]
  include DataX

  def index
  end

  def get_location
    # do some stuff here
  end

end

home.html.erb

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <%= csrf_meta_tags %>
    <%= action_cable_meta_tag %>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <%= stylesheet_link_tag 'home/manifest.css', media: 'all' %>
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
    <link href='http://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB5LELGIW21xr6W1H1NBQNvjqLM3hENa64&libraries=places&language=pt-BR"></script>
    <%= javascript_include_tag 'home/manifest.js' %>
  </head>

<body>

<%= yield %>

<%= yield(:form_js) %>

</body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-13 18:31:33

我的代码有两个问题:

1-是的,我忘了把最后一个});关闭js函数。

代码语言:javascript
复制
$(document).ready(function() {
  return $("#search_city").on("change", function() {
    return $.ajax({
      url: "home/get_location",
      type: "GET",
      dataType: "script",
      data: {
        city: $('#search_city').val()
      }
    });
  });
});

2-我在home_controller上使用了home_controller,它与动作get_location产生了冲突。因此,我从索引中删除了限制,只留下了一句话:skip_before_action :authenticate_user!,以涵盖所有的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46731827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档