web-dev-qa-db-fra.com

Comment puis-je afficher un PHP les réponses de foreach loop par AJAX

J'ai un problème dans ma demande AJAX, j'essaie d'obtenir les valeurs d'un cycle foreach, mais le résultat est vide.

Functions.php file

 function selectEstado(){
 global $wpdb;
 if(isset($_POST["selectVal"])){ 
    $Estado_id = $_POST["selectVal"];
     $Estado = $wpdb->get_results("SELECT * FROM cor_municipio INNER JOIN cor_estado ON cor_municipio.estado_id = cor_estado.estado_id WHERE cor_estado.estado_id = $Estado_id;");
    foreach ( $Estado as $row ) {
        $table .="<tr>";
        $table .="<td>".$row->nombre_municipio."</td>";
        $table .="<td>".$row->nombre_estado."</td>";
        $table .="</tr>";
    }
        echo $table;
        wp_die(); 
    }
}
add_action('wp_ajax_my_action', 'selectEstado');
add_action('wp_ajax_nopriv_my_action', 'selectEstado');

AJAX ON page-municipio.php

<script type="text/javascript">
 function selectRequest(id){ // id of select
    var selectVal = jQuery(id).val(); // currently selected 
    selectVal = selectVal.toString();
    jQuery.ajax({
        url:"/cors/wp-admin/admin-ajax.php",   
        type:"POST", 
        data:{action:'my_action', selectVal: 'selectVal'},
        success:function(data){ 
            alert(data);  
            jQuery("#municipio_result").hide();
            jQuery("#resultado").append(data);
            },
       });  
    }

Voici comment les données arrivent

 ALERT BY LOCALHOST 

1
Juan O Mtz

Votre code est sélectionné dans la base de données où cor_estado.estado_id est égal à $Estado_id = $_POST["selectVal"];, mais dans votre code JavaScript, vous n'envoyez pas d'ID en tant que $_POST["selectVal"], vous envoyez littéralement la chaîne de texte "selectVal":

data:{action:'my_action', selectVal: 'selectVal'},

Changez cela en ceci, pour envoyer la valeur réelle de la variable:

data:{action:'my_action', selectVal: selectVal},
0
Jacob Peattie