2012-12-23 180 views
1
flagUpdateCustomer = 0; 
$("input#checknames").click(function() { 
    $.ajax({ 
     url: 'php.scripts/checknames.php', 
     data: { firstname: $("input#firstname").val(), 
      lastname: $("input#lastname").val(), 
      address1: $("input#address1").val(), 
      address2: $("input#address2").val(), 
      city: $("input#city").val(), 
      state: $("input#state").val(), 
      zip: $("input#zip").val(), 
      phone: $("input#phone").val(), 
      email: $("input#email").val(), 
      cell: $("input#cell").val() 
     }, 
     type: 'post', 
     async: false, 
     success: function (output) { 
      var obj = $.parseJSON(output); 
      $("#existcustomers").empty(); 
      for (var iCnt = 0; iCnt < obj.length; iCnt++) { 
       if (obj[iCnt].firstname == null) { obj[iCnt].firstname = ""; } 
       if (obj[iCnt].lastname == null) { obj[iCnt].lastname = ""; } 
       if (obj[iCnt].address1 == null) { obj[iCnt].address1 = ""; } 
       if (obj[iCnt].address2 == null) { obj[iCnt].address2 = ""; } 
       if (obj[iCnt].city == null) { obj[iCnt].city = ""; } 
       if (obj[iCnt].state == null) { obj[iCnt].state = ""; } 
       if (obj[iCnt].zip == null) { obj[iCnt].zip = ""; } 
       if (obj[iCnt].phone == null) { obj[iCnt].phone = ""; } 
       if (obj[iCnt].email == null) { obj[iCnt].email = ""; } 
       if (obj[iCnt].cell == null) { obj[iCnt].cell = ""; } 

       var newRow = $("<tr><td>" + obj[iCnt].firstname + "</td><td>" + obj[iCnt].lastname + "</td><td>" + obj[iCnt].address1 + "</td><td>" + obj[iCnt].address2 + "</td><td>" + obj[iCnt].city + "</td><td>" + obj[iCnt].state + "</td><td>" + obj[iCnt].zip + "</td><td>" + obj[iCnt].phone + "</td><td>" + obj[iCnt].email + "</td><td>" + obj[iCnt].cell + "</td></tr>").data('id',obj[iCnt].id); 
       $("#existcustomers").append(newRow); 
      } 


      $("#existcustomers tr").hover(function() { $(this).addClass("highlight"); }, function() { $(this).removeClass("highlight"); }); 

      $("#existcustomers tr").click(function() { 


       $("#form-main").data('id', $(this).data('id')); 

       $("input#firstname").val($(this).children(":eq(0)").text()); 
       $("input#lastname").val($(this).children(":eq(1)").text()); 
       $("input#address1").val($(this).children(":eq(2)").text()); 
       $("input#address2").val($(this).children(":eq(3)").text()); 
       $("input#city").val($(this).children(":eq(4)").text()); 
       $("input#state").val($(this).children(":eq(5)").text()); 
       $("input#zip").val($(this).children(":eq(6)").text()); 
       $("input#phone").val($(this).children(":eq(7)").text()); 
       $("input#email").val($(this).children(":eq(8)").text()); 
       $("input#cell").val($(this).children(":eq(9)").text()); 

       $("input#firstname").attr('disabled', 'disabled'); 
       $("input#lastname").attr('disabled', 'disabled'); 
       $("input#address1").attr('disabled', 'disabled'); 
       $("input#address2").attr('disabled', 'disabled'); 
       $("input#city").attr('disabled', 'disabled'); 
       $("input#state").attr('disabled', 'disabled'); 
       $("input#zip").attr('disabled', 'disabled'); 
       $("input#phone").attr('disabled', 'disabled'); 
       $("input#email").attr('disabled', 'disabled'); 
       $("input#cell").attr('disabled', 'disabled'); 

       $("#form-main").data('firstname', $("input#firstname").val()); 
       $("#form-main").data('lastname', $("input#lastname").val()); 
       $("#form-main").data('address1', $("input#address1").val()); 
       $("#form-main").data('address2', $("input#address2").val()); 
       $("#form-main").data('city', $("input#city").val()); 
       $("#form-main").data('state', $("input#state").val()); 
       $("#form-main").data('zip', $("input#zip").val()); 
       $("#form-main").data('phone', $("input#phone").val()); 
       $("#form-main").data('email', $("input#email").val()); 
       $("#form-main").data('cell', $("input#cell").val()); 

       //I am trying to determine how to call .ajax again to set my $_SESSION in PHP 
       //A recursive call to .ajax does not seem to be a good option here 
       //I was hoping to see somthing about an onchange or onupdate event in the jQuery docs 
       //for .data() however I had no such luck. Perhaps could I use just the onchange() 
       //event of #form-main? Essentially once the data is set in #form-main I have to call 
       //.ajax again for add.customer.session.php. I am confused right now. 

       //???????????????? 

       // 
       // 

       $('#form-main').css('background-color', 'green'); 
      }); 
     } 


    }); 


}); 

我需要打个电话.ajax()和呼叫内,设定了$("#existcustomers tr").click()和里面点击处理事情将.ajax()另一个调用的第一个内,但是我正在寻找另一种最合乎逻辑的方式选项。我现在想知道是否有一些简单的方法将事件挂接到#form-main并在.data()将数据设置为#form-main后运行一些代码。一如既往地感谢您提供任何有关此代码的建议或评论!避免递归调用.ajax();

+6

请勿使用'async:false'。 – SLaks

+1

如果你想避免在对方内部有Ajax调用,你可以使用非匿名函数。这样,您可以在与调用ajax不同的地方定义回调。 – TonioElGringo

+1

不应该为ajax成功回调中的所有行添加点击处理程序。每次发出ajax请求时都会复合点击处理程序。使用'on()'委托点击处理程序以允许未来的元素。或者只是将点击处理程序应用到新行,因为它们添加了'newRow.click ...' – charlietfl

回答

1

我不认为你在这里有一个递归问题。你刚才链接了ajax调用。如果它能够四处循环并再次调用原始动作,这实际上只是一个问题。

既然知道你的第一个ajax调用将会进行另一个ajax调用,你可以同时作为一个异步调用或者如果你有对服务器API的控制,允许在这两个类型的数据中设置/请求一个电话。

+0

谢谢你的回复。我要求在我进行一些测试的同时将其打开。 – Giuseppe

+0

我在.ajax调用中添加了对.ajax的调用,并尝试运行代码,但现在$(“#form-main”).data('id')作为未定义变量进入, PHP。 – Giuseppe

+0

如果你的第二个Ajax调用确实使用来自第一个Ajax调用的数据,那么你的简单答案就是链接它们。如果是这种情况,你不能简化它,那么你不应该担心有链接的电话。 –