AJAXリクエストに問題があります。foreachサイクルから値を取得しようとしていますが、空が返されます。
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);
},
});
}
これがデータの到着方法です
あなたのコードはcor_estado.estado_id
が$Estado_id = $_POST["selectVal"];
と等しいデータベースから選択しています、しかしあなたのJavaScriptではあなたは$_POST["selectVal"]
としてIDを送っていません、あなたは文字列"selectVal"
を文字通り送っています:
data:{action:'my_action', selectVal: 'selectVal'},
これをこれに変更して、実際の変数値を送信します。
data:{action:'my_action', selectVal: selectVal},