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

Javascript 为什么AJAX成功调用中的代码不起作用?,javascript,php,jquery,mysql,ajax,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

我有一个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 -->

$(“#f#u产品”)。在('submit',函数(事件){
event.preventDefault();
数据=$(this).serialize();
$.ajax({
类型:“POST”,
url:“”,
数据:数据
}).success(函数(){
警报(“产品列表已准备好打印”);
窗口。打开(“,”空白“);
窗口。打开(“,”_self“);
});
});
AJAX脚本成功地将数据从表单插入数据库。但不知何故,成功的剧本是行不通的。为什么?

此AJAX的行为包括:

  • 将数据插入数据库-成功
  • 显示警惕
  • 打开新页面进行打印
  • 将当前页面刷新为新表单

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");
    }
});

我不确定是否有
.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");
    }
});
$.ajax({
类型:“POST”,
url:“”,
数据:数据,
成功:函数(){
警报(“产品列表已准备好打印”);
窗口。打开(“,”空白“);
窗口。打开(“,”_self“);
}
});
根据

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

如果将
成功
替换为
完成
,该怎么办


否则,
success
应该是您抛出到
$.ajax({…})
中的对象的属性,匿名函数是它的值。

您必须告诉我们当前和预期的行为是什么。我们不知道“不起作用”意味着什么。嗯,警报不会出现。不打开新页面进行打印,也不重新阅读当前页面。
done/fail/always/then
是应该在延迟页面之外使用的选项<代码>成功将用作ajax的参数。检查浏览器开发人员工具是否存在错误,并添加错误处理程序,因为调用并不总是成功。检查我的answer@Dekel-在检查文档后,有,但不再推荐,因为该功能已被弃用。我使用firebug,它说jquery未定义。jquery.form.jsSo如果没有jquery,就不能使用它:)请确保从正确的路径加载jquery库。但是为什么正确插入数据呢?也许代码中的其他地方有其他错误,这会导致错误this@ashura91由于您没有在('submit',函数(事件)上加载jQuery,
$(“#f_product”){
什么都不做,所以您得到的是正常的表单提交。我假设表单的
操作
URL与您发送AJAX请求的URL相同。
$.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");
    }
});