【问题标题】:Ruby Rails - Javascript with AJAX POST working locally but not HerokuRuby Rails - 带有 AJAX POST 的 Javascript 在本地工作但 Heroku 不工作
【发布时间】:2014-01-20 17:44:43
【问题描述】:

我似乎遇到了一些关于 JS 和 Heroku 的长期问题。虽然不完全——我的一些 JS 工作,但不是全部。

我在application.js中有以下内容:

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .


 function submitForm(pagenamed, starttime, endtime) {
      alert("checked the button - worked");
      $.ajax({
           type:'POST', 
           url: '/pagetimes/create', 
           data: $.param({ pagetime: {pagename: pagenamed, start: starttime, end: endtime }}),
           async:false
      });
 }

var d = new Date();
var starttime = d.getTime();
var pagename = document.URL
alert("load works START:" +d+ starttime + pagename);

window.onbeforeunload=function() {
var j = new Date();
var endtime = j.getTime();
alert("unload works START:" +d+ starttime +"END:"+j+ endtime +pagename );
      $.ajax({
           type:'POST', 
           url: '/pagetimes/create', 
           data: $.param({ pagetime: {pagename: pagename, start: starttime, end: endtime }}),
           async:false
      });
}

正如您可能猜到的那样,这是一个 JS,它通过向 create 操作发送 AJAX 调用(所有这些都无需用户输入)来捕获在页面上花费的时间并将其记录在模型(页面时间)下。我仍在开发中,所以我留下了一堆警报,以便在函数被触发时向我展示。还有一个函数,我可以使用一个按钮调用它,它有效地做同样的事情(我在构建它时如何调试 AJAX 调用)。所有这些都可以在 localhost(开发)中无缝运行,但只有按钮在 Heroku 上的生产环境中有效。即使考虑到这一点,onloadonbeforeunload 操作也会在预期时在 Heroku 上触发(我收到警报,与开发中的完全相同),但我的数据库中没有显示任何内容。对这里出了什么问题有任何想法吗?

关于预编译资产然后推送到 Heroku,或调整 production.rbapplication.rb 文件中的各种选项,有很多答案,但尝试了很多都无济于事。还有一些答案报告了application.js 文件中//=... 行的排序问题(与引导程序有关),我也尝试过,但又没有。

它一定与我在事件函数中声明的变量或async:none 选项有关?否则我没有想法。我对 localhost 和 heroku 应用程序使用相同的浏览器。有什么明显的我可能会丢失吗?使用 Rails 3,Win7,没有花哨的宝石。

更新 1:

我发现以下内容:JavaScript not loading on Heroku but works locally 这听起来与我的问题非常相似。会是这样吗?

更新 2:

我在警报中包含了 pagename 变量,以查看它是否无法正常工作。不是问题,正确的信息出现在警报中。还使按钮和onbeforeunload async 选项相同,以防万一。不是。现在,关于这些 ajax 调用的所有内容都完全相同,但一个有效,另一个无效。什么给了?

【问题讨论】:

  • 我在那里使用它们只是为了在警报中向我显示它们已正确传递到 onbeforeunload 事件中;它们在onload 事件之外声明,以便在那里可以访问它们(否则它们不是)。基本上这只是调试的残余,所以我可以确保事情被正确传递。
  • 我已经将我的代码更新到上述内容,但我仍然遇到同样的问题:在 localhost 上完美运行(动作触发和数据发布到 db),动作在 Heroku 中触发,但没有任何内容发布到我的数据库.
  • 你有预编译你的资产吗?
  • 是的,预编译对我没有任何作用...

标签: javascript ruby-on-rails ajax ruby-on-rails-3 heroku


【解决方案1】:

这是答案(对我来说)——与 JS 无关,只有 postgres DB。我的整数太大了。

Integer out of range on Postgres DB

Heroku / Postgres Error: integer out of range

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多