2017-10-26 4 views
1

Ich habe ein anderes Projekt übernommen und versucht, die Dinge herauszufinden, da ich neu bei JS bin.Überprüfen Sie die Gültigkeitsprüfung, bevor Sie mit AJAX fortfahren.

Ich brauche die AJAX-Anforderung, die aufgerufen wird, wenn die Schaltfläche geklickt wird, aber auch wenn die Validierung wahr ist, dann auf die Antwort aus dem Dialogfeld warten und abbrechen, wenn 'Nein' ausgewählt wurde, und weiter, wenn 'Ja' ausgewählt ist .

Im Moment geht es weiter mit dem AJAX-Post und zeigt den Dialog zur selben Zeit an, als ich mit vorSenden versuchte.

Jede Art von Richtung wäre eine große Hilfe.

Dank

$('#button').on('click', function() { 
    var startdate = moment(year + "-" + month + "-" + day,'YYYY-MM-DD').format('YYYY-MM-DD'); 
    var lastActionLogEffectiveDt = $('#lastActionLogEffectiveDate').val(); 
    var lastActionLogEffectiveDate = moment(lastActionLogEffectiveDt).format("YYYY-MM-DD"); 

    $.ajax({ 
     url: myUrl, 
     type: "POST", 
     beforeSend : function(xhr){ 
     if(startdate <= lastActionLogEffectiveDate) { 
      tools.helpers.confirm({title:'Warning', message:'</p><p>Are you sure you want to continue?</p>', buttons:{yes:1, no:1}, type:'warning'}).then(
       function(answer) { 
       if(answer == 'no') { 
        xhr.abort(); 
       } 
      }); 
     } 
     }, 
    }).done(function(resp) { 
    if(!resp) { 
     reloadPage(); 
    } 
    else 
    { 
     validationUtil.removeAllErrorsFromPage(); 
     validationUtil.populateErrorPane(resp);   
    } 
    }).fail(function() { 
     validationUtil.removeAllErrorsFromPage(); 
     validationUtil.populateErrorPane("Error processing payment actions, please try again."); 
    }) 
    return false; 

}); 
+0

nach der [jQuery API] (http://api.jquery.com/jquery.ajax/), die Anfrage beforeSend abzubrechen sollte false zurück. Du machst das nicht. – andrewf

+0

Sie können eine if-Anweisung vor dem Ajax-Aufruf verwenden, um zu prüfen, ob der Benutzer 'Ja' ausgewählt hat und nur dann den Ajax-Anruf tätigt, andernfalls nicht. – Yatin

Antwort

0

Wie wäre es die AJAX-Request in Ihrem Dialog Zustand Einwickeln, anstatt es in 'beforeSend' zu tun? Auf diese Weise wird die Anfrage erst gestartet, wenn mit dem Dialog interagiert wurde.

$('#button').on('click', function() { 
    var startdate = moment(year + "-" + month + "-" + day,'YYYY-MM-DD').format('YYYY-MM-DD'); 
    var lastActionLogEffectiveDt = $('#lastActionLogEffectiveDate').val(); 
    var lastActionLogEffectiveDate = moment(lastActionLogEffectiveDt).format("YYYY-MM-DD"); 

    if (startdate <= lastActionLogEffectiveDate) { 
    tools.helpers.confirm({ title:'Warning', message:'</p><p>Are you sure you want to continue?</p>', buttons:{ yes: 1, no: 1 }, type:'warning' }) 
    .then(function (answer) { 

     if(answer === 'yes') { 

     $.ajax({ 
      url: myUrl, 
      type: "POST" 
     }).done(function (resp) { 
      if(!resp) { 
      reloadPage(); 
      } else { 
      validationUtil.removeAllErrorsFromPage(); 
      validationUtil.populateErrorPane(resp);   
      } 
     }).fail(function() { 
      validationUtil.removeAllErrorsFromPage(); 
      validationUtil.populateErrorPane("Error processing payment actions, please try again."); 
     }) 

     } 

    }); 
    } 
    return false; 
}); 
+0

Was ist, wenn ich möchte, dass die Ajax-Anfrage ausgeführt wird, wenn auf die Schaltfläche geklickt wird und wenn die Validierung gestartet wird, wird sie auch ausgeführt, wenn der Benutzer Ja wählt, andernfalls abbrechen - hoffe, dass das Sinn macht? – Qbessi

Verwandte Themen