【问题标题】:jQuery AJAX post not working with my php codejQuery AJAX 帖子不适用于我的 php 代码
【发布时间】:2017-10-03 01:38:28
【问题描述】:

我正在尝试进行动态选择。您应该首先选择州 (id = "edo"),然后选择城市 (id = "municipio")。两个选择都从我的数据库中检索信息;但是,当我尝试让城市选择通过 AJAX 发布动态响应时,没有任何变化。我直接运行我的页面getMunicipio.php,我得到的是注意:未定义索引:id_estado in C:\xampp\htdocs\nthlife\js\getMunicipio.php on line 9

你能帮帮我吗?这是我的 JavaScript 代码。

$(document).ready(function (){
  $("#edo").change(function () {
    $("#edo option:selected").each(function () {
      id_estado = $(this).val();
      //alert(id_estado);
      $.post("getMunicipio.php", { id_estado: id_estado }, function(data){
        $("#municipio").html(data);
      });            
    });
  })
});

这是 getMunicipio.php 中的代码

include "../includes/conexionbd.php";

//var_dump($_POST);

//if (isset($_POST['id_estado']))
{
    $id_estado = $_POST['id_estado'];

    $queryM = "SELECT * FROM municipios WHERE estado = '".$id_estado."'";
    $resultadoM = mysqli_query($conexion, $queryM) or die(mysqli_error($conexion));

    $check = mysqli_num_rows($resultadoM);
    $html= "<option value='0'>" . $check . "</option>";

    while($rowM = mysqli_fetch_array($resultadoM))
    {
        $html.= "<option value='".$rowM['id_municipio']."'>".$rowM['nombre_municipio']."</option>";
    }

    echo $html;
}

谢谢。

【问题讨论】:

  • 这是选择倍数吗?我已经找到了你的问题,只需要知道给你正确的答案。如果它不是一个选择多个你的代码是多余的,否则你必须意识到选择选项没有.value(jQuery 中的.val()),而选择本身有。选择选项在 vanilla JS 中有 .innerHTML 和 .text,在 jQuery 中有 .html() 和 .text()。这意味着将 id_estado = $(this).val(); 更改为 var id_estado = $(this).text(); 可能会为您做到这一点。

标签: javascript php jquery ajax post


【解决方案1】:

确实需要查看您的 HTML,但从您发布的内容来看,javascript 端应该可以工作。

您在var_dump($_POST) 中看到了什么?直接运行页面可能会引发错误,因为您的 POST 变量未设置并且您的 if (isset($_POST['id_estado'])) 条件已被注释掉。您应该将条件更改为if (!empty($_POST['id_estado'])),就好像表单以空值发布它一样,它仍然会被设置,但它会是空的。

你使用双引号来创建你的字符串,所以转义变量是不必要的,因为 PHP 会解析它们。

这些:

$html= "<option value='0'>" . $check . "</option>";
$queryM = "SELECT * FROM municipios WHERE estado = '".$id_estado."'";

可以变成这些:

$html= "<option value='0'>$check</option>";
$queryM = "SELECT * FROM municipios WHERE estado = '$id_estado'";

但是,您不能在双引号字符串中使用单引号数组键。

改变这个:

$html.= "<option value='".$rowM['id_municipio']."'>".$rowM['nombre_municipio']."</option>";

到这里:

$html.= "<option value='{$rowM['id_municipio']}'>{$rowM['nombre_municipio']}</option>";

或者这个:

$html.= "<option value='$rowM[id_municipio]'>$rowM[nombre_municipio]</option>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 2019-04-26
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多