javascript
  • jquery
  • ajax
  • 2016-06-26 16 views 0 likes 
    0

    In meiner Webseite verwende ich jQuery/Ajax, um Formulardaten zu speichern. Nach dem Speichern der Daten mit PHP I wie unten Erfolgsmeldung am zeigt:Warum jQuery-Rückgabedaten nicht wie erwartet funktionieren?

    if($sql){ 
        $sql_result[] = "<div class='success'>updated</div>"; 
    } 
    
    echo end($sql_result); 
    

    In Ajax Rückgabedaten mir eine Bedingung bin Überprüfung, ob Meldung enthalten updated dann werde ich ein html-Element verstecken, aber es funktioniert nicht.

    Hier ist meine jQuery-Code:

    function save_email (element, event) { 
    
        e = $(element); 
        event.preventDefault(); 
        var formData = new FormData(e.parents('form')[0]); 
    
        $.ajax({   
         data : formData, 
         cache : false, 
         contentType: false, 
         processData : false, 
    
         url : 'save_email.php', 
         type : 'POST', 
         xhr : function() { 
          var myXhr = $.ajaxSettings.xhr(); 
          return myXhr; 
         }, 
         success : function (data) { 
          $("#email_success").html(data); 
          //$("#email_success").show('slow').delay(3000).hide('slow');    
          if(data == "<div class='success'>updated</div>") {     
           $("#save_email_button").hide('slow');     
           $(".delete_ex_email_label").hide('slow');     
          }    
         }, 
        }); 
    } 
    

    Console Protokolldaten

    enter image description here

    Aktualisiert:

    alert(data) zeigt dies:

    enter image description here

    +2

    Sie HTML von Server nicht senden, nur Status/Flag im JSON-Format senden und dann auf Client-Seite HTML erstellen – Tushar

    +0

    ist das zum schnellen Laden Zweck @Tushar? –

    +0

    Drucken in der Konsole 'Daten' Variable im Erfolgs-Callback. Welchen Wert zeigt es? – 1ven

    Antwort

    2

    Es ist nicht ungewöhnlich, mit extra Leerzeichen in php text/html Ausgabe

    Das am Ende ist ein Grund, es ist einfacher, Json zu verwenden und Objekteigenschaften überprüfen, vor allem über eine komplexe Zeichenfolge zu vergleichen wie du es tust.

    jedoch trim() verwenden, wenn String-Vergleich der Ergebnisse ist in der Regel eine gute Idee

    versuchen
    $.trim(data) === "<div class='success'>updated</div>") 
    
    Verwandte Themen