jQuery ajax POST请求被触发两次

时间:2015-07-17 09:04:29

标签: javascript jquery ajax coffeescript

我在这里触发的ajax POST请求是将一行数据插入数据库,但是插入两个单独的表中。首先,这是我的jQuery代码。

$(window).on 'add.playlist', (e, collection, callback) ->
    e.preventDefault()
    e.stopPropagation()
    if window.Playlist.show_bucket_list()[0].id
      alert 'You have already made a Playlist with these videos.'
      return false
    if $('.add-playlist input').val().trim().length < 1
      alert 'Please make a name.'
      return false
    $.ajax
      url: '/playlist/add/new'
      method: 'post'
      async: false
      headers:
        Accept: 'application/json'
      data:
        playlist_name: $('.add-playlist input').val()
        data: JSON.stringify collection
      success: (d, s, x) ->
        console.log 'playlist add result: ', d
        if x.status isnt 200
          return 'Error'
      error: (x, s, d) ->
        console.log s, d
    return callback() if callback
  $ '.add-playlist form'
    .on 'submit', (e) ->
      after_adding_playlist = ->
        $ '.add-playlist-success'
          .removeClass 'hide'
          .addClass 'animated fadeInRight'
        setTimeout ->
          $('.add-playlist-success').addClass('animated fadeOutRight')
        , 2000
        setTimeout ->
          $('.add-playlist-success').addClass('hide').removeClass('animated fadeInRight fadeOutRight')
        , 3500
      $(window).trigger 'add.playlist', [window.Playlist.show_bucket_list(), after_adding_playlist]

请注意,我使用的是CoffeeScript而不是Javascript。所以我创建了一个名为add.playlist的事件,并为其绑定了一个回调函数。提交表单时,会触发事件并在完成时触发after_adding_playlist函数。但是,我开始意识到,每次提交表单时,POST请求都会被触发两次,首先是所有数据,第二次是没有数据,因此服务器返回

SyntaxError: Unexpected token u 

因为没有要解析的JSON格式的数据。为什么会这样?我已经浏览了Stack Overflow上的所有类似问题,但找不到答案。

0 个答案:

没有答案