【问题标题】:Submit button gets stuck on "sending..."提交按钮卡在“正在发送...”
【发布时间】:2018-11-27 13:39:31
【问题描述】:

我的网站上有一个联系表。填写表格并单击提交后,按钮卡在“发送...”但我仍然收到电子邮件。我认为这可能与我的代码的 ajax 部分有关?任何帮助表示赞赏。

JS:

$(function()
{
    function after_form_submitted(data) 
    {
        if(data.result == 'success')
        {
            $('form#reused_form').hide();
            $('#success_message').show();
            $('#error_message').hide();
        }
        else
        {
            $('#error_message').append('<ul></ul>');

            jQuery.each(data.errors,function(key,val)
            {
                $('#error_message ul').append('<li>'+key+':'+val+'</li>');
            });
            $('#success_message').hide();
            $('#error_message').show();

            //reverse the response on the button
            $('button[type="button"]', $form).each(function()
            {
                $btn = $(this);
                label = $btn.prop('orig_label');
                if(label)
                {
                    $btn.prop('type','submit' ); 
                    $btn.text(label);
                    $btn.prop('orig_label','');
                }
            });

        }//else
    }

    $('#reused_form').submit(function(e)
      {
        e.preventDefault();

        $form = $(this);
        //show some response on the button
        $('button[type="submit"]', $form).each(function()
        {
            $btn = $(this);
            $btn.prop('type','button' ); 
            $btn.prop('orig_label',$btn.text());
            $btn.text('Sending ...');
        });


                    $.ajax({
                type: "POST",
                url: 'handler.php',
                data: $form.serialize(),
                success: after_form_submitted,
                dataType: 'json' 
            });        

      });   
});

【问题讨论】:

  • 你检查你的控制台是否有任何错误或什么?
  • 您需要在 Javascript 中声明您的变量。 label$btn 永远不会被声明。我确信这会导致您的开发者控制台中出现错误消息。
  • 我声明了我的变量,但它仍然停留在“正在发送...”
  • 你的回调函数执行了吗?我认为您的回调函数不知道$form 是什么。

标签: jquery html ajax forms


【解决方案1】:

看来您必须更新success 块中的按钮

if(data.result == 'success')
{
    // get the button
    ...

    // reset the text.
    $btn.text('Original Text');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 2013-08-06
    • 2014-04-30
    相关资源
    最近更新 更多