AJAX 调用不起作用,查找错误的操作
AJAX call not working, looking for the wrong action?
我希望在按下按钮时将 AJAX 调用发送到我的events_controller#check
操作。这是我的代码:
events'ew.html.erb:
<button id="check-button" type="button">Check</button>
应用.js:
$(document).on('click', "#check-button", function(){
var checkList = []; //creates array to store customer ids
...
});
$.ajax({
url: '/events/check',
data:checkList
}
)
});
events_controller#检查
def check
checkList = params[:checkList]
...
end
路线.rb
post 'events_controller/check' => 'events#check'
单击按钮时,我在控制台中收到此错误:
Started GET "/events/check?undefined=" for 127.0.0.1 at 2016-02-03 11:36:33 +0000
AbstractController::ActionNotFound (The action 'show' could not be found for EventsController):
actionpack (4.1.8) lib/abstract_controller/base.rb:131:in `process'
actionview (4.1.8) lib/action_view/rendering.rb:30:in `process'
actionpack (4.1.8) lib/action_controller/metal.rb:196:in `dispatch'
actionpack (4.1.8) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.1.8) lib/action_controller/metal.rb:232:in `block in action'
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:82:in `call'
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:50:in `call'
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:73:in `block in call'
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:678:in `call'
...etc
为什么它试图找到动作"显示"而不是"检查"?我该如何解决这个问题?谢谢
2 个问题:
- 您可能在声明的路线之前已经
)resources :events
了(为什么它会show
- 您尚未调用
POST
方法
您应该具备以下条件:
#config/routes.rb
resources :events do
post :check, on: :collection #-> url.com/events/check
end
#app/assets/javascripts/application.js
$(document).on('click', "#check-button", function(){
var checkList = []; //creates array to store customer ids
...
$.ajax({
url: '/events/check',
data: checkList,
method: "POST"
});
});
在我看来
,当请求中缺少类型时,需要发布请求,因此它会将GET
请求作为默认请求方法。
您需要向 ajax 添加type
:
type:'post',
1 检查页面中是否正确导入了 Jquery 文件。
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
$.ajax({
url: '/events/check', // Check URL is correct
cache: false,
success: function(html){
//TO DO Action
}
});
- 检查您应用的网址值是否正确。 然后使用以下代码。
相关文章:
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 由于错误80020101(v1.5.3),GMLib无法完成操作
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- React+Redux-未捕获错误:操作可能没有未定义的“;类型“;所有物
- 表单在由ajax部分Ruby创建时有错误的操作
- 未捕获类型错误:无法设置未定义的属性“操作”
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 错误“由于与数据库无关的原因,操作失败..“,在 Firefox 中使用 indexedDB 时
- jQuery:Javascript抛出错误“;操作不安全”;设置值时
- fs extra:错误:EPERM:不允许操作,取消链接
- 当我在异步操作Redux上开始单元测试时,没有定义错误承诺
- 操作映射触发控制器中的错误方法
- SSL/JS错误破坏了我页面上的表单操作
- Firefox 安全错误:“操作不安全
- 错误:操作不安全.图片未在亚马逊服务器网址的画布 base64 中转换
- 错误操作控制器::在轨道中呈现部分单击时返回link_to未知格式
- Javascript中动态分配的点击事件触发错误操作
- 未捕获的错误:操作缺少侦听方法React/Reflux
- 2 个按钮组,但 1 组执行错误操作
- 安全错误:操作不安全.使用 Htmlcanvas