it-swarm.com.de

WordPress Ajax Problem mit undefinierter URL

Ich habe ein Problem mit dem WordPress-Plugin - im jQuery.ajax-Teil ist das ajax_object (url: ajax_object.ajax_url) undefiniert und ich weiß nicht warum. Ich kann keinen korrekten Code von meinem PHP-Plugin erhalten, aber wenn ich die URL zu der sm.php-Datei hart finde, funktioniert alles korrekt. Wenn ich "url" lösche und nur "action: acton_exitpopup" verwende, bin ich erfolgreich (Daten) Empfangen eines vollständigen HTML-Dokuments (HTML der Site, auf der sich das Formular befindet). Ich brauche Hilfe, um mein Problem mit der Ajax- und WordPress-Integration zu lösen.

JS/Ajax:

jQuery(document).ready(function () {

jQuery('#submit').click(function()
{   

email = jQuery("#email").val();
firstName = jQuery("#firstName").val();
agree = jQuery('#agree').prop('checked');

var mail_match =/^[^@][email protected][^@]+.[a-z]{2,}$/;


if(firstName == "" || firstName == "Your email" ) {
    jQuery("#firstName").css({'border-color': 'red'});
    return false;
}
else if((email.search(mail_match) == -1)) {
     jQuery("#email").css({'border-color': 'red'});
    return false;
}
else if(agree == false) {
     jQuery(".agree").css({color: 'red'});
    return false;
}
else {
      jQuery("#email").css({'border-color': '#d1d1d1'});
      jQuery("#firstName").css({'border-color': '#d1d1d1'});


      jQuery.ajax({
        url: ajax_object.ajax_url,
        action: action_exitpopup,
        type: "POST",
        data:
        {
            firstName: firstName,
            email: email
        },
        success: function(data)
        {

            if(data && (data != 'bad') )
            {
                console.log(data);
                setCookie("popup", "1", 365);
                setCookie("smuuid", data, 30);
                console.log('correct data recieved');
            }
            else if (data = "bad")
            {      
                console.log('not working');

            } else {
                console.log('totaly not working');
            }
            return false;
        }
      });  
      return false;
}

});  

});

PHP Plugin:

<?php
   /*
   Plugin Name: Exitpopup for Salesmanago
   Plugin URI: somedata
   Description: Exitpopup window for salesmanago 
   Version: 1.0
   Author: somedata
   Author URI: http://somedata.pl
   License: GPL2
   */


function add_exitpopup(){ 
    wp_enqueue_style('styleexitpop', get_bloginfo('template_directory') . "/exitpop/styleexitpop.css" );



    wp_enqueue_script( 'popup.js', get_bloginfo('template_directory') . "/exitpop/popup.js", array( 'jquery' ) );


    wp_localize_script( 'add_exitpopup', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); 
} 

add_action( 'wp_enqueue_style', 'add_exitpopup' );
add_action( 'wp_enqueue_scripts', 'add_exitpopup' );


function action_exitpopup() {

    // SALESmanago config  

    $clientId = 'somedata'; 
    $apiKey = 'somedata'; 
    $apiSecret = 'somedata'; 
    $endpoint = 'http://app2.salesmanago.pl'; 
    // If we send message for the user, add email ID from SALESmanago
    $emailId = 'somedata'; 

    $dt = new DateTime('NOW'); 

    function do_post_request($url, $data)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER,
                    array(
                         'Content-Type: application/json',
                         'Content-Length: ' . strlen($data)
                    )
        );

        return curl_exec($ch);
    }

    if(isset($_POST['email'])) {
        // Filled form

        $name = $_POST['firstName'];
        $email = $_POST['email'];

        // $name = $firstName . ' ' . $lastName;

        // Data for request 
        $data = array( 
            'clientId' => $clientId,
            'apiKey' => $apiKey, 
            'requestTime' => time(), 
            'sha' => sha1($apiKey . $clientId . $apiSecret), 
            'contact' => array( 
               'email' => $email, 
               'name' => $name 
                ), 
            'owner' => '[email protected]', 
            'tags' => array('test_cookie'), // Tags
            'lang' => 'EN',
            'useApiDoubleOptIn' => true,
            'forceOptIn' => false,
            'forceOptOut' => false  
        );



        $jsonAddContact = json_encode($data);


        // Send request, add new/update contact to SALESmanago
        $result = do_post_request($endpoint. '/api/contact/upsert', $jsonAddContact);

        $r = json_decode($result);

        // Get contact ID 
        $contactId = $r->{'contactId'};

        if (isset($contactId)) {
            // If contact added/updated successfully

         echo json_encode($contactId);
        }


    } else {
        echo 'bld';
    }
wp_die();

}

add_action( 'wp_ajax_action_exitpopup', 'action_exitpopup' );
add_action( 'wp_ajax_nopriv_action_exitpopup', 'action_exitpopup' );



function displayExitPopup() {

    echo '<div id="popup-overlay" style="display: none;"></div>
    <div id="popup" style="display: none;">
    <div class="btn">x</div>
    <div class="left">
    <h2>Lorem ipsum</h2>

    <p>Lorem Ipsum Lorem IpsumLorem IpsumLorem IpsumLorem Ipsum</p>

    <form class="subscribe-form" role="form">

        <input type="text" name="firstName" placeholder="Your name" id="firstName" class="form-control">

        <input type="email" name="email" placeholder="Your email" id="email" class="form-control">

        <input type="checkbox" id="agree" class="agree" name="agree" />
        <p class="agree">Agree <a href="">pp</a></p>

        <button class="btn-newsletter" id="submit">Lorem Ipsum!</button>

    </form>
    </div>
    <div class="right">
        <img src="' . get_bloginfo('template_directory') .'/exitpop/someimg.jpg" alt="">
    </div>
</div>';

}

add_action( 'wp_footer', 'displayExitPopup' );

?>
1
Adamo

So funktioniert die Lokalisierung. Als erstes müssen Sie Ihr Skript bei WordPress registrieren. Dies sagt WordPress ziemlich genau, wo sich das Skript befindet, um welche Version es sich handelt, welche Abhängigkeiten es hat (wie z. B. jquery) und ob es sich in der Kopf- oder Fußzeile befindet. Noch wichtiger ist, dass Sie ihm eine eindeutige Kennung geben, auf die Sie in der wp_localize_script() verweisen können, damit WordPress den Gültigkeitsbereich Ihrer lokalen Variablen kennt. In allen drei Funktionsaufrufen muss der eindeutige Bezeichner also derselbe sein:

function add_exitpopup(){ 
    wp_enqueue_style('styleexitpop', get_bloginfo('template_directory') . "/exitpop/styleexitpop.css" );

    // Register Our Script:
    wp_register_script(
        'popup-js',
        get_bloginfo('template_directory') . "/exitpop/popup.js",
        array( 'jquery' )
    );

    // Localize Our Script with our AJAX URL ( Note the same unique identified at the front )
    wp_localize_script(
        'popup-js',
        'ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
    ); 

    // Enqueue Our Script
    wp_enqueue_script( 'popup-js' );
}
add_action( 'wp_enqueue_scripts', 'add_exitpopup' );
1
Howdy_McGee