【发布时间】:2018-02-26 14:05:08
【问题描述】:
我开始使用 AJAX,但我正在为接下来的几件事而苦苦挣扎。 我在 Wordpress 中使用自定义表格。 顺便说一句,这就是全局 $wpdb 存在的原因。
首先,我有一个 Select,当您选择一个选项时,ID 值将存储在 jQuery 中的一个变量中。这是由
onchange="selectRequest(this)"
global $wpdb;
$Estado = $wpdb->get_results("SELECT * FROM cor_estado;");
?>
<p>Busqueda por Estado</p>
<select class="select" id="estado" name="estado" value="" type="text" onchange="selectRequest(this);">
<option value="" disabled selected>Seleccione un estado...</option>
<?php
foreach ($Estado as $Estados ) {
echo "<option value='".$Estados->estado_id."' type='text'>".$Estados->nombre_estado."</option>";
}
?>
</select>
Select 将填写值和名称上的 id。
这是我的 jQuery,但我在这里遇到了问题,如果我将所有内容都留在 jQuery(document).ready(){CODE HERE} 上,则函数 selectRequest(id) 将根本不起作用,我不知道这是否与我从选择中获取 id 的方式有关。
这里发生了变化,现在我正在尝试接收 HTML,我在“table.php”上创建了完整的表格,现在我正在尝试取回它
<script type="text/javascript">
function selectRequest(id){ // id of select
var selectVal = jQuery(id).val(); // currently selected
selectVal = selectVal.toString();
alert(selectVal);
jQuery.ajax({
type:"POST",
url:"<?php echo get_template_directory_uri(); ?>/table.php",
dataType: "html",
data:{selectVal:selectVal},
success:function(resultHtml){
jQuery("#resultado").html(resultHtml);
},
error:function(resultHtml){
alert("What follows is blank: " + data);
}
});
}
</script>
我的 PHP 目前是这样的,一个很大的变化是在 WHERE 中,因为我使用的是 INNER JOIN,我需要指定“estado_id”将在哪个表上,因为 Wordpress 使用表前缀,这个地方也需要加进去。
就像我之前说的,我决定在这里建表,并通过回显将其发送到 AJAX,我创建了 $table,每次在表中创建某些内容时,我都使用“.=”添加它。
在没有“If(isset($_post['selectVal']))”的情况下在 table.php 中进行测试,并且在 table.php 文档上使用静态 ID,但如果我回显 $table,我在 AJAX 上什么也得不到,它显示为空白。
<?php
//table.php
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;");
$table = "<table>";
$table .="<thead>";
$table .="<tr>";
$table .="<th>Municipio</th>";
$table .="<th>Estado</th>";
$table .="</tr>";
$table .="</thead>";
$table .="<tbody>";
foreach ($Estado as $row) {
$table .="<tr>";
$table .="<td>".$row->nombre_municipio."</td>";
$table .="<td>".$row->nombre_estado."</td>";
$table .="</tr>";
}
$table .="</tbody>";
$table .="</table>";
echo $table;
}
?>
这是我想要显示 echo $table 内容的 HTML div。目前,如果我选择一个选项,唯一发生的事情就是 P 元素消失了。
<div id="resultado">
<p>Estado Seleccionado</p>
</div>
新问题是接收这个 echo $table 并在 AJAX 接收它的地方显示它。
【问题讨论】:
标签: php jquery mysql ajax wordpress