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
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},