2016-04-07 4 views
0

Каждый второй раз, когда я нажимаю кнопку сохранения, он НЕ получит имя (первое сообщение будет возвращено в ответ в ответ), но оно не назначает имя как значение имени который скрыт.jQuery скрытое входное значение пустое на каждом втором посту

Когда я не опорожню nameInput.val(''); после успешного опубликования и сохранения, он будет успешно сохранен.

$('#save').on('click', function() 
{ 
    var id = $("#field1").val(), 
    field2 = $("#field2").val(), 
    field3 = $("#field3").val(), 
    nameInput = $("#Name"), 
    comment = $("#comment").val(); 

    $.ajax({ 
     type: "POST", 
     data: { getCustomerName: id }, 
     url: 'dataprocess.php', 
     dataType: "json", 
     success: 
     function(response) 
     { 
      if(response.status == "success") 
      { 
       nameInput.val(response.customerName) 
      } 
      //alert(response.customerName); 
     }, 
     error: 
     function(response) 
     { 
      alert(response.status); 
     } 
    }); 

    var customerName = $("#Name").val(); 

    var data = { id: id, field2: field2, field3: field3, customerName: customerName, comment: comment }; 
    alert(customerName); 

    if(customerName == '') 
    { 
     var r = confirm("Name is empty, continue?"); 
    } 

    if(field2 == '' || field2 <= 0) 
    { 
     var r = confirm('Field2 empty, continue?'); 
    } 

    if(r == false) 
    { 
     return false; 
    } 

    $.ajax({ 
     type: "POST", 
     url: "dataprocess.php", 
     data: data, 
     dataType: "json", 
     success: 
     function(data) { 
     //        loader.hide(); 
     if(data.status === "error") 
     { 
      $('#notify').removeClass('alert-success').addClass('alert-danger'); 
     } 
     else 
     { 
      $('#notify').removeClass('alert-danger').addClass('alert-success'); 
      nameInput.val(''); 
     } 
      $('#notify').html(data.message).fadeIn(500).fadeOut(2000); 
     } 
    }); 
});  
+0

https://jsfiddle.net/arunpjohny/497qp2dw/1/? –

ответ

0

Вызов $ .ajax является асинхронным. Вам нужно дождаться ответа, прежде чем обрабатывать ответ.

$('#save').on('click', function() { 
 
    var id = $("#field1").val(), 
 
     field2 = $("#field2").val(), 
 
     field3 = $("#field3").val(), 
 
     nameInput = $("#Name"), 
 
     comment = $("#comment").val(); 
 

 
    $.ajax({ 
 
     type: "POST", 
 
     data: { 
 
      getCustomerName: id 
 
     }, 
 
     url: 'dataprocess.php', 
 
     dataType: "json", 
 
     success: function(response) { 
 
      if (response.status == "success") { 
 
       nameInput.val(response.customerName) 
 
       var customerName = $("#Name").val(); 
 
       var data = { 
 
        id: id, 
 
        field2: field2, 
 
        field3: field3, 
 
        customerName: customerName, 
 
        comment: comment 
 
       }; 
 
       alert(customerName); 
 

 
       if (customerName == '') { 
 
        var r = confirm("Name is empty, continue?"); 
 
       } 
 

 
       if (field2 == '' || field2 <= 0) { 
 
        var r = confirm('Field2 empty, continue?'); 
 
       } 
 

 
       if (r == false) { 
 
        return false; 
 
       } 
 

 
       $.ajax({ 
 
        type: "POST", 
 
        url: "dataprocess.php", 
 
        data: data, 
 
        dataType: "json", 
 
        success: function(data) { 
 
         //        loader.hide(); 
 
         if (data.status === "error") { 
 
          $('#notify').removeClass('alert-success').addClass('alert-danger'); 
 
         } else { 
 
          $('#notify').removeClass('alert-danger').addClass('alert-success'); 
 
          nameInput.val(''); 
 
         } 
 
         $('#notify').html(data.message).fadeIn(500).fadeOut(2000); 
 
        } 
 
       }); 
 
      } 
 
     }, 
 
     error: function(response) { 
 
      alert(response.status); 
 
     } 
 
    }); 
 
});