web-dev-qa-db-fra.com

Comment passer action et formdata dans wordpress ajax?

J'ai un formulaire d'inscription où j'essaie d'enregistrer de nouveaux membres. J'essaie de transmettre les données formdata pour le téléchargement d'images et l'action ajax dans wordpress. Actuellement, j'essaie d'imprimer les valeurs dans la console. Mais la fonction ajax n’est pas du tout appelée car l’action ne fonctionne pas. Comment puis je faire ça. Aidez-moi, s'il vous plaît.

HTML

<form id="landlordregform" method="post" action="" enctype="multipart/form-data" novalidate="novalidate">
   <div class="registrationformbox landloardregformbox">
      <div id="custommsg"></div>
      <table width="100%">
         <tbody>
            <tr>
               <td><input type="text" name="username" placeholder="USERNAME*" id="username" class="valid" aria-invalid="false"></td>
               <td><input type="password" name="password" placeholder="PASSWORD*" id="password" class="valid validate-equalTo-blur" aria-invalid="false"></td>
               <td><input type="password" name="confirmpassword" placeholder="CONFIRM PASSWORD*" class="valid" aria-invalid="false"></td>
            </tr>
            <tr>
               <td><input type="text" name="name" placeholder="NAME*" class="valid" aria-invalid="false"></td>
               <td><input type="text" name="email" placeholder="EMAIL*" id="email" class="valid" aria-invalid="false"></td>
               <td><input type="text" name="telephone" placeholder="TELEPHONE*" class="valid" aria-invalid="false"></td>
            </tr>
            <tr>
               <td><input type="text" name="town_city" placeholder="TOWN/CITY*" class="valid" aria-invalid="false"></td>
               <td><input type="text" name="postcode" placeholder="POST CODE*" class="valid" aria-invalid="false"></td>
               <td><input type="file" name="profilepic" class="valid" aria-invalid="false"></td>
            </tr>
         </tbody>
      </table>
      <table width="100%">
         <tbody>
            <tr>
               <td><textarea name="address" placeholder="ADDRESS*" class="valid" aria-invalid="false"></textarea></td>
            </tr>
         </tbody>
      </table>
      <div class="submitubttonbox"><button type="button" name="landlordregisterbutton" id="landlordregisterbutton" class="qbutton white big_large">Register</button></div>
   </div>
</form>

jQuery

jQuery("#landlordregisterbutton").click(function(){
        if(jQuery("#landlordregform").valid()){
            var formData=new FormData(document.getElementById('landlordregform'));  
            //formData.append( 'file', input.files[0] );            
            jQuery.ajax({
                url: jQuery("#cusajaxurl").val(),
                type: 'POST',
                data: formData + '&action=custom_landlord_registration_process', 
                cache: false,
                processData: false, 
                contentType: false,     
                success: function(data) {
                    console.log(data);
                }
            });
        }
    });

Les fonctions

add_action('wp_ajax_nopriv_custom_landlord_registration_process','custom_landlord_registration_process');

add_action('wp_ajax_custom_landlord_registration_process','custom_landlord_registration_process');

    function custom_landlord_registration_process(){
        //$formdata=array();
        //parse_str($_POST['formdata'],$formdata);


        print_r($_POST);

        die();
    }
2
Nitin Johnson

essayez d'ajouter l'action dans le formdata:

        var formData=new FormData(document.getElementById('landlordregform')); 

        formData.append("action", "custom_landlord_registration_process");   

        jQuery.ajax({
            url: jQuery("#cusajaxurl").val(),
            type: 'POST',
            data: formData, 
            cache: false,
            processData: false, 
            contentType: false,     
            success: function(data) {
                console.log(data);
            }
        });
1
mmm

vous pouvez envoyer n'importe quel nombre de données dans les données d'un tableau de cette façon:

jQuery.ajax({
        url: jQuery("#cusajaxurl").val(),
        type: 'POST',
        data: {
            'action' : 'custom_landlord_registration_process',
            'form_data' : formData,
        },
        cache: false,
        processData: false, 
        contentType: false,     
        success: function(data) {
            console.log(data);
        }
    });

puis accédez à formData dans le fichier php en tant que $ _POST ['form_data'].

0
Annapurna