ajax jquery - 在函数中插入2个

时间:2013-10-24 21:54:28

标签: javascript jquery ajax

这是我的代码

$('#enviarGuia').click(function () {
    var fecha = $('#fecha').val();
    var rut = $('#rut').val()
    var obs = $('#obs').val();
    var direccion = $('#direccion').val();
    var ciudad = $('#ciudad').val();
    var total = $('#total').val();
    var sucursal = $('#sucursal').val();
    if (validaSalida()) {
        respuesta = confirm("Esta seguro de guardar?")

        if (respuesta) {
            cargaCorre() // carga correlativo
            var correlativo = $('#correlativo').html();
            $('#tablasDetalle tr').not(':first').each(function () {
                var unidad = $(this).children("td:nth-child(1)").html();
                var descrip = $(this).children("td:nth-child(2)").html();
                var p_unitario = $(this).children("td:nth-child(3)").html();
                var correlativo = $('#correlativo').html();

                $.ajax({
                    type: "POST",
                    url: "../ajax/registra_guia_entrega.php",
                    data: 'unidad=' + unidad + '&descrip=' + descrip + '&p_unitario=' + p_unitario + '&correlativo=' + correlativo + '&sucursal=' + sucursal,
                    datatype: "html",
                    success: function (msg) {

                    }
                })
            })
            $.ajax({

                type: "POST",
                url: "../ajax/registra_guia_entrega.php",
                data: 'fecha=' + fecha + '&rut=' + rut + '&obs=' + obs + '&direccion=' + direccion + '&ciudad=' + ciudad + '&total=' + total + '&sucursal=' + sucursal + '&correlativo=' + correlativo,
                datatype: "html",
                success: function (msg) {
                    if (parseInt(msg) != 5) {
                        if (sucursal == "GE") {
                            top.ifrm.location.href = '../pdf/guia_entrega_pdf.php?numero=' + correlativo + '&tipo=' + sucursal;
                        } else {
                            top.ifrm.location.href = '../pdf/guia_entrega_tarapaca_pdf.php?numero=' + correlativo + '&tipo=' + sucursal;
                        }

                    }

                }
            })
        }
    }
})

问题是我在函数中有两个插入

第一个是

    $('#tablasDetalle tr').not(':first').each(function() {
var unidad=$(this).children("td:nth-child(1)").html();
var descrip=$(this).children("td:nth-child(2)").html();
var p_unitario=$(this).children("td:nth-child(3)").html();
var correlativo=$('#correlativo').html();

$.ajax({    
  type: "POST",
  url: "../ajax/registra_guia_entrega.php",
  data: 'unidad='+unidad+'&descrip='+descrip+'&p_unitario='+p_unitario+'&correlativo='+correlativo+'&sucursal='+sucursal,
  datatype: "html",
  success: function(msg){

  }
      })
})

这个细节总是不止一个插入

,第二个插页是

    $.ajax({

  type: "POST",
  url: "../ajax/registra_guia_entrega.php",
  data: 'fecha='+fecha+'&rut='+rut+'&obs='+obs+'&direccion='+direccion+'&ciudad='+ciudad+'&total='+total+'&sucursal='+sucursal+'&correlativo='+correlativo,
  datatype: "html",
  success: function(msg){
  if(parseInt(msg)!=5)
   {
if(sucursal=="GE")
{
 top.ifrm.location.href='../pdf/guia_entrega_pdf.php?numero='+correlativo+'&tipo='+sucursal;
}
else{
    top.ifrm.location.href='../pdf/guia_entrega_tarapaca_pdf.php?numero='+correlativo+'&tipo='+sucursal;
    }

   }

  }
      })

这是头,总是一个插页。

问题是当我用php

以pdf格式显示文档时
    if(sucursal=="GE")
{
 top.ifrm.location.href='../pdf/guia_entrega_pdf.php?numero='+correlativo+'&tipo='+sucursal;
}
else{
    top.ifrm.location.href='../pdf/guia_entrega_tarapaca_pdf.php?numero='+correlativo+'&tipo='+sucursal;
    }

文档显示在第一个插入周期结束之前

2 个答案:

答案 0 :(得分:1)

将第二个ajax调用放在第一个的success()中。然后你将保证它只会在第一次ajax调用成功后运行。当然,在完成最后一个$('#tablasDetaille tr')元素的ajax之后,你只需要这样做。

$('#enviarGuia').click(function(){
    var fecha = $('#fecha').val();
    var rut = $('#rut').val()
    var obs = $('#obs').val();
    var direccion = $('#direccion').val();
    var ciudad = $('#ciudad').val();
    var total = $('#total').val();
    var sucursal = $('#sucursal').val();

    if (validaSalida()) {
        respuesta = confirm("Esta seguro de guardar?")
        if (respuesta) {
            cargaCorre() // carga correlativo
            var correlativo = $('#correlativo').html();
            $('#tablasDetalle tr').not(':first').each(function () {
                var unidad = $(this).children("td:nth-child(1)").html();
                var descrip = $(this).children("td:nth-child(2)").html();
                var p_unitario = $(this).children("td:nth-child(3)").html();
                var correlativo = $('#correlativo').html();

                $.ajax({
                    type: "POST",
                    url: "../ajax/registra_guia_entrega.php",
                    data: 'unidad=' + unidad + '&descrip=' + descrip + '&p_unitario=' + p_unitario + '&correlativo=' + correlativo + '&sucursal=' + sucursal,
                    datatype: "html",
                    success: function (msg) {
                        if (/* do something here to check that you've 
                            processed the last element in $('#tablasDetalle tr')*/)
                        $.ajax({
                            type: "POST",
                            url: "../ajax/registra_guia_entrega.php",
                            data: 'fecha=' + fecha + '&rut=' + rut + '&obs=' + obs + '&direccion=' + direccion + '&ciudad=' + ciudad + '&total=' + total + '&sucursal=' + sucursal + '&correlativo=' + correlativo,
                            datatype: "html",
                            success: function (msg) {
                                if (parseInt(msg) != 5) {
                                    if (sucursal == "GE") {
                                        top.ifrm.location.href = '../pdf/guia_entrega_pdf.php?numero=' + correlativo + '&tipo=' + sucursal;
                                    } else {
                                        top.ifrm.location.href = '../pdf/guia_entrega_tarapaca_pdf.php?numero=' + correlativo + '&tipo=' + sucursal;
                                    }
                                }
                            }
                         })
                     }
                })
            })
        }
    }
})

答案 1 :(得分:1)

您可以将async: false,添加到两个$ .ajax调用的选项中。这会强制第二个ajax请求等到第一个ajax请求结束加载。