我在这里触发的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上的所有类似问题,但找不到答案。