Dotmailer-在ajax调用后使用PHP重定向

Dotmailer-在ajax调用后使用PHP重定向,php,jquery,ajax,dotmailer,Php,Jquery,Ajax,Dotmailer,我正在通过DotMailer注册一份时事通讯,并能够让它将电子邮件地址和地区添加到DotMailer中,但当我试图让它在最后返回一条成功/无效消息时,它只是说无效,尽管它成功通过 我知道它与$success函数有关,但是遇到了麻烦,如果有人能帮忙的话 PHP $username = "username_here"; //Your API username $password = "password_here"; //your API password $client = new SoapCli

我正在通过DotMailer注册一份时事通讯,并能够让它将电子邮件地址和地区添加到DotMailer中,但当我试图让它在最后返回一条成功/无效消息时,它只是说无效,尽管它成功通过

我知道它与$success函数有关,但是遇到了麻烦,如果有人能帮忙的话

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" );
}

所有提示和帮助都很有用,谢谢

首先,您必须知道,php中“return”语句后面提到的代码不会被跟踪!
第二点,哪种类型的数据返回函数addContactToAddressBook?您可以添加console.log(文本);在测试函数jquery成功之前,请查看。
如果是布尔值,则可以在jquery的成功函数中执行以下操作:


具体输出是什么?它是php文件中的“无效”还是正在调用formError()函数?formError()函数总是被调用,请参见:
success
中的条件语句。此外,如果这不起作用,请尝试用
'success'
(单引号)替换
“success”
。很抱歉,没有早点回来,我已完成此操作并转到其他内容。我添加了console.log(文本);返回jquery,但返回了以下内容,这似乎令人困惑..致命错误:未捕获的SoapFault异常:[soap:Server]服务器无法处理请求。--电子邮件字段是必需的。错误\u CONTACT\u在C:\xampp\htdocs\expo\wp content\themes\expo\php\form进程中无效。php:19堆栈跟踪:#0 C:\xampp\htdocs\expo\wp content\themes\expo\php\form进程。php(19):SoapClient-\uu调用('AddContactToAdd…',Array)#1c:\xampp\htdocs\expo\expo\wp content\themes\expo\php\form进程。php(19):SoapClient addcontacttoaddtoaddressbook(Array)#2{main}在第19行的C:\xampp\htdocs\expo\wp content\themes\expo\php\form-process.php中抛出
success : function(text){
        if (text){
            formSuccess();
        } else{
            formError();
        }
    }