为什么AJAX成功调用中的代码不起作用?

时间:2016-12-20 01:48:06

标签: javascript php jquery mysql ajax

我有一个AJAX脚本将表单中的数据插入到MySQL数据库中。这是AJAX。

<!-- SUBMIT FORM VIA AJAX -->
$("#f_product").on('submit',function(event){ 
    event.preventDefault();

    data = $(this).serialize();

    $.ajax({
    type: "POST",
    url: "<?php echo site_url('con_product/ins_product'); ?>",
    data: data
    }).success(function() {
        alert("Products list is ready to be printed");
        window.open("<?php echo site_url('con_product/print_product'); ?>","_blank");
        window.open("<?php echo site_url('con_product/form_product'); ?>","_self");
    });
});
<!-- END SUBMIT FORM VIA AJAX -->

AJAX脚本成功将数据从表单插入数据库。但不知何故,成功的剧本不起作用。为什么?

这个AJAX的行为是:

  • 将数据插入数据库 - 成功
  • 显示提醒
  • 打开新页面以供打印。
  • 将当前页面刷新为新表单。

3 个答案:

答案 0 :(得分:3)

successcallback函数的名称,而不是promise

您应该使用:

$.ajax({
    type: "POST",
    url: "<?php echo site_url('con_product/ins_product'); ?>",
    data: data,
    success: function() {
        alert("Products list is ready to be printed");
        window.open("<?php echo site_url('con_product/print_product'); ?>","_blank");
        window.open("<?php echo site_url('con_product/form_product'); ?>","_self");
    }
});

done承诺:

$.ajax({
    type: "POST",
    url: "<?php echo site_url('con_product/ins_product'); ?>",
    data: data
}).done(function() {
    alert("Products list is ready to be printed");
    window.open("<?php echo site_url('con_product/print_product'); ?>","_blank");
    window.open("<?php echo site_url('con_product/form_product'); ?>","_self");
});

答案 1 :(得分:0)

我不确定是否有.success功能。但你可以试试这个:

$.ajax({
    type: "POST",
    url: "<?php echo site_url('con_product/ins_product'); ?>",
    data: data,
    success: function(){
        alert("Products list is ready to be printed");
        window.open("<?php echo site_url('con_product/print_product'); ?>","_blank");
        window.open("<?php echo site_url('con_product/form_product'); ?>","_self");
    }
});

答案 2 :(得分:0)

根据http://api.jquery.com/jquery.ajax/

  

弃用通知:从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调被删除。您可以使用jqXHR.done(),jqXHR.fail()和jqXHR.always()代替。

如果您将success替换为done

,该怎么办?

否则,success应该是您使用匿名函数作为其值投入$.ajax({...})的对象的属性。