Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails Ajax表单提交两次-需要解决方法_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Javascript Rails Ajax表单提交两次-需要解决方法

Javascript Rails Ajax表单提交两次-需要解决方法,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我知道这是一个非常常见的问题,但让我解释一下我是如何使用这段代码的。我正在开发一个Rails登录表单,它需要通过Ajax提交,以便显示一个已经处于活动状态的会话警报。如果没有活动的会话,我希望提交表单。如果有,我想显示警报。有什么解决办法吗?我猜是这样的: $('form#login-form').on 'submit', (event)-> 应该是别的吗 $('form#login-form').on 'submit', (event)-> # first submit

我知道这是一个非常常见的问题,但让我解释一下我是如何使用这段代码的。我正在开发一个Rails登录表单,它需要通过Ajax提交,以便显示一个已经处于活动状态的会话警报。如果没有活动的会话,我希望提交表单。如果有,我想显示警报。有什么解决办法吗?我猜是这样的:

$('form#login-form').on 'submit', (event)-> 
应该是别的吗

$('form#login-form').on 'submit', (event)->     # first submit
event.preventDefault();
$(this).off('submit') # Only do this once.
dataToSubmit = $(this).serialize();
$.ajax({
  type: 'POST',
  url: $(this).attr('action'),
  data: dataToSubmit,
  dataType: 'json',
  success: (resp) ->
    console.log("success: #{resp}")
    if resp['message'] == 'OtherSessionActive'
      showAlert(resp['session_alert'])
    else
      $('form#login-form').submit()           # second submit
    return false
  error: (data) ->
    console.log("error: #{data}")
    return false
})

showAlert = (text) ->
if confirm(text) is true
flag = 1
$('input#flag').val(flag)
$('form#login-form').submit()
$('form#login-form').each ->
  this.reset()
  $(this.children[1].children[3]).val(0)
else
$('form#login-form').each ->
  this.reset()
false

$'formlogin-form'。在'submit'上,事件->函数在任何情况下都应该返回false…..我很困惑。如果没有活动会话,为什么要提交表单?控制器已具有第一次提交时的表单数据。为什么不直接测试控制器上的活动会话,然后使用表单数据执行一些操作,或者将错误发送回客户端?