2017-06-27 3 views
0

Ich mache einen Newsletter Anmeldung über DotMailer und in der Lage, es zu bekommen, die E-Mail-Adresse und Region zu DotMailer hinzufügen, aber wenn ich es versuche, um eine Erfolg/ungültige Nachricht zurückzugeben am ende heißt es einfach ungültig obwohl es erfolgreich durchkommt.Dotmailer - Redirect mit PHP nach Ajax Anruf

Ich weiß, es auf die $ Erfolgsfunktion verknüpft ist, sondern eine Mauer treffen, wenn jemand helfen kann? ...

PHP

$username = "username_here"; //Your API username 
$password = "password_here"; //your API password 
$client = new SoapClient("http://apiconnector.com/api.asmx?WSDL"); 
//Instantiate the Soap client 
$addressbookid=id_here; 

$email = $_POST["email"]; 
$Expo2017 = $_POST["region"]; 
$AudienceType="B2B"; 
$OptInType="Single"; 
$EmailType="Html"; 

$keys = array("EXPO2017"); 
$var2 = new SoapVar($Expo2017,XSD_STRING,"string","http://www.w3.org/2001/XMLSchema"); 
$values = array($var2); 
$Datafields = array ('Keys'=>$keys,'Values'=>$values); 
$contact = array ("Email"=>$email,"AudienceType"=>$AudienceType,"OptInType"=>$OptInType,"EmailType"=>$EmailType,"ID"=>-1,"DataFields"=>$Datafields); 
$params = array ("username"=>$username,"password"=>$password,"contact"=>$contact,"addressbookId"=>$addressbookid); 
return $client->AddContactToAddressbook($params); 

$success = "success"; 

// redirect to success page 
if ($success){ 
    echo "success"; 
}else{ 
    echo "invalid"; 
} 

jQuery

jQuery(".footer_form").submit(function(event){ 
    // cancels the form submission 
    event.preventDefault(); 
    submitForm(); 
}); 

function submitForm(){ 
    // Initiate Variables With Form Content 
    var region = $(".footer_form_select").val(); 
    var email = $(".footer_form_input").val(); 

    // console.log(region); 
    // console.log(email); 

    jQuery.ajax({ 
     type: "POST", 
     url: "../wp-content/themes/expo/php/form-process.php", 
     data: "region=" + region + "&email=" + email, 
     success : function(text){ 
      if (text == "success"){ 
       formSuccess(); 
      } else{ 
       formError(); 
      } 
     } 
    }); 
} 


function formError(){ 
    jQuery(".form_message_failed").removeClass("hidden");   
} 

    function formSuccess(){ 
    jQuery(".form_message_success").removeClass("hidden"); 
} 

Alle Tipps und Hilfe nützlich, danke!

+0

Was genau ist der Ausgang? Ist es in Ihrer PHP-Datei "ungültig" oder wird die Funktion formError() aufgerufen? – KyleS

+0

Die Funktion formError() wird immer aufgerufen – Sam

+0

Sehen Sie, wenn: '$ .trim (Text) ===" Erfolg "' hilft – KyleS

Antwort

0

Als Erstes müssen Sie wissen, dass der Code, der nach der "return" -Anweisung in Ihrem PHP erwähnt wird, nicht eingezeichnet wird!
Zweiter Punkt, welcher Datentyp die Funktion AddContactToAdressBook zurückgibt? Sie fügen ein console.log (Text) hinzu; kurz bevor dein test in succes funktioniert jquery zu sehen.
Wenn boolean, können Sie in jquery in Erfolgsfunktion tun:

success : function(text){ 
     if (text){ 
      formSuccess(); 
     } else{ 
      formError(); 
     } 
    } 
+0

Sorry, nicht früher zurück zu kommen, wurde von diesem und weiter zu etwas anderem gezogen. Ich habe die console.log (Text) hinzugefügt; zur jquery aber zurück kam das, was schien verwirrend .. – Sam

+0

Schwerwiegender Fehler: Uncaught SoapFault Ausnahme: [Seife: Server] Server konnte Anfrage nicht verarbeiten. --- > Das E-Mail-Feld ist erforderlich. ERROR_CONTACT_INVALID in C: \ xampp \ htdocs \ expo \ wp-content \ themes \ expo \ php \ form process.php: 19 Stapelüberwachung: # 0 C: \ xampp \ htdocs \ expo \ wp-content \ themes \ expo \ php \ form-process.php (19): SoapClient: > __call ('AddContactToAdd ...', Array) # 1 C: \ xampp \ htdocs \ expo \ wp-content \ themes \ expo \ php \ form-process.php (19): SoapClient- > AddContactToAddressbook (Array) # 2 {main} geworfen in C: \ xampp \ htdocs \ expo \ wp-content \ themes \ expo \ php \ form-process.php in Zeile 19 – Sam