gpt4 book ai didi

javascript - jQuery 调用 Controller 操作不符合预期

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:06 24 4
gpt4 key购买 nike

我有以下 jQuery:

var request = $.get("getPerforceSuites");
request.success(function(result){
alert("res: " + result)
})
request.error(function(jqXHR, textStatus, errorThrown) {
alert ("err: " + errorThrown);
})

routes.rb 中的以下条目:

  get "getPerforceSuites", to: "perforce_sync#getPerforce"

在我的perforce_sync_controller.rb中:

  def getPerforce
# return getRemoteSuites
puts "++++++++++++++++++++++++++++++++++++++"
puts "Called getPerforce"
puts "++++++++++++++++++++++++++++++++++++++"
return "Hi!"
end

最初这是行不通的 - 直到我在/views/perforce_sync 中创建了一个空的 getPerforce.erb.html 文件...现在我可以自信地说 getPerforce 操作肯定被调用了,因为出现了 3 个“puts”行在 Rails 服务器日志中。但是,我曾期望“警报(”res:“+结果)”显示“嗨!”...但是,我得到了一整堆 HTML,看似文档标题(但我从哪个文件不知道!):

res: <!DOCTYPE html>
<html>
<head>
<title>Test1</title>
<link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/authentication.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/bootstrap.css?body=1" media="all" rel="stylesheet" /> ***... SNIP ... ***

任何人都可以解释我在这里犯了什么错误吗?我是 jQuery 的新手 - 但谷歌搜索没有让我认识到这个问题!

谢谢!

最佳答案

这是由于 Rails 响应 Controller 操作的方式。默认情况下,如果您不在 Controller 操作中调用 render,那么它将在您的 View 文件夹中查找模板。这就是它希望您创建一个 getPerforce.erb.html 文件的原因。

为了让它只返回纯文本,在 Controller 中你可以这样写:

render :text => 'Hi!'

如果你正在做 AJAX 的东西,那么通常你会想要返回 JSON,你也可以像这样在 Controller 中这样做

render :json => {:data_key => 'A value'}

关于javascript - jQuery 调用 Controller 操作不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22683387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com