jQuery AJAX请求语法问题(混合普通JS函数)

时间:2019-06-08 13:45:29

标签: javascript jquery

对于一个非常了解JQuery的人(不是我),这可能是一个简单的解释,但是当我像这样运行我的代码时,它就可以正常工作:

$('input#addStatButton').click( function() {
    $.ajax({
      type: 'POST',
      url: '{{action("StatController@store")}}',
      data: $('form#new_stat').serialize(),
    })
    .done(function(refresh) {
      clearStat();
      $.get('{{action("StatController@show", [$game->id])}}', function(data) {
        var newData = $("#statList" , data)
        $( "#statList" ).html( newData );
        //console.log(newData);
      });
    });
  });

注意'clearStat()'函数的位置。这只是清除了一个表单,以防止用户两次提交它。我希望此操作能尽早运行,以便确保快速关闭“提交”按钮。

但是,当我像这样运行它时,正是出于这个确切原因,在“ clearStat()”下面没有任何内容起作用……

$('input#addStatButton').click( function() {
    clearStat();
    $.ajax({
      type: 'POST',
      url: '{{action("StatController@store")}}',
      data: $('form#new_stat').serialize(),
    })
    .done(function(refresh) {
      $.get('{{action("StatController@show", [$game->id])}}', function(data) {
        var newData = $("#statList" , data)
        $( "#statList" ).html( newData );
        //console.log(newData);
      });
    });
  });

如果有所作为,这是clearStat()函数本身:

function clearStat() {
  addPlayerToStat(null, null);
  addStatToStat(null);
  document.getElementById("addStatButton").style.display = 'none';
  document.getElementById("playerSelected").style.display = 'none';
  document.getElementById("statSelected").style.display = 'none';
}

这让我感到困惑,因为我不太了解JQuery,但是我确信这只是一个愚蠢的事情。但是,在回答时,您还可以提供一种在AJAX请求之前运行'clearStat()'的方法吗?

1 个答案:

答案 0 :(得分:2)

假设clearStatform#new_stat表单中的元素进行操作,您需要先调用serialize,然后再清除表单,例如(请参见{ {1}}条注释行):

***