Php Jquery AJAX对所选值返回空响应
我正在尝试使用jqueryajax级联更新SELECT标记。 该标准作为POST/JSON传递给PHP脚本,该脚本反过来使用PDO从MySql数据库中提取数据。然后使用JSON显示响应。 我的问题是,有两个特定记录时,响应将为空 表单selectBB.php:Php Jquery AJAX对所选值返回空响应,php,jquery,mysql,ajax,pdo,Php,Jquery,Mysql,Ajax,Pdo,我正在尝试使用jqueryajax级联更新SELECT标记。 该标准作为POST/JSON传递给PHP脚本,该脚本反过来使用PDO从MySql数据库中提取数据。然后使用JSON显示响应。 我的问题是,有两个特定记录时,响应将为空 表单selectBB.php: <?php include_once '../core/classes/bbClasses.php'; $db=new workingDB(); ?> <!DOCTYPE html> <head&g
<?php
include_once '../core/classes/bbClasses.php';
$db=new workingDB();
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<link href="../Core/css/css.css" rel="stylesheet" type="text/css"/>
<script src="../Core/jquery/jquery-1.11.1.js" type="text/javascript"></script>
<!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>-->
<title>Liste des départements</title>
</head>
<body>
<div id="wrapper">
<header>
<div id="logoZone"></div>
<nav>
<li><a href="#">Clients</a></li>
<li><a href="#">Positions</a></li>
<li><a href="#">Clients</a></li>
<li><a href="#">Maintenance</a></li>
<li><a href="#">Rapports</a></li>
</nav>
</header>
<aside>
<ul>
<li>Reservation</li>
<li>Location</li>
<li>Renouvellement</li>
</ul>
</aside>
<div id="content">
<form method="$POST" name="frmSlctBB">
<label for="slctDPT">Departement</label>
<select id= "Dpt" name="slctDPT">
<?php
$listDPT=$db->loadDPT();
if(count($listDPT)){
foreach ($listDPT as $DPT) {
echo ("<option value=".$DPT['IDDepartment'].">".$DPT['DepartmentName']."</option>");
}
}
?>
</select>
<label for ="slctVille">Ville</label>
<select id="slctVille" name="slctVille">
</select>
<label for ="slctFormat">Format</label>
<select id="slctFormat" name="slctFormat"></select>
<label for ="slctStatut">Statut</label>
<select id="slctStatut" name="Statut"></select>
</form>
<!--Error log-->
<div class="errorlog"></div>
<!-- End of error log-->
</div> <!-- end of content-->
<footer>
<ul>
<li> <address><strong>Dauphin s.a.</strong>bldg #8, complexe Acra <br>route de Delmas,<br>Delmas, HT6120<br>Haiti</address></li>
</ul>
</footer>
</div> <!-- end of wrapper-->
<script src="../Core/js/searchCritFunctions.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#Dpt").change(function(){
fetchCities();
});
});
</script>
相反,如果Ajax数据为1或9,则响应将为空
提前感谢你的帮助
注意:我已经验证了数据库,这些特定的行不是空的
另外:@Sean,谢谢你提醒我忘记添加listcity.php
<?php
//Output list of cities based on departments selected
include_once '../core/classes/bbClasses.php';
$d=$_POST['d']; //array of departments selected
$base= new workingDB();
$villes=$base ->loadCities($d);
echo json_encode($villes);
$base="";
?>
listCities.php是什么样子的?为了清楚起见,我添加了这个问题。谢谢。有点不对劲,正如您所说,通过AJAX发送的数据是2,您会得到[{IDCity:22,0:22,IDDepartment:5,1:5,…,但由于您的查询是从IDDepartment=.dpt的tblCities中选择IDCity,IDDepartment,CityName;您应该得到的是IDDepartment:2而不是IDDepartment:5。因此,在数据中的某处:{d:selDpt},$d=$\u POST['d'];,$villes=$base->loadCities$d;,公共函数loadCities$dpt,其中iddepartment=.$dpt您的值从2->5更改了。@Sean,我想这是我的错别字,我在原始帖子中进行了更正。但是在您的评论之后,我注意到,当我将标准设置为3时,Firefox控制台将输出[Object{0=16,1=3,2=Jacmel,more…],Object{0=17,1=3,2=Marigot,more…}]但当我将其设置为9时,我将根据9时得到的控制台输出得到Object{url=listCities.php,type=POST,isLocal=false,more…},如果看到控制台时ajax失败,则返回$document.ajaxrofunctionjqxhr,textStatus,throwner{.我假设1是select中的第一个值,9是最后一个值?它可能不会更改任何内容,但请尝试在select值周围加引号。$DPT['DepartmentName']。;
<?php
require_once '../core/config/config.php';
class workingDB extends db {
public function loadDPT(){
$sql="SELECT * FROM tblDepartments ORDER BY DepartmentName";
$q = $this->conn->prepare($sql);
$q->execute();
return $row=$q -> fetchAll();
}
public function loadCities($dpt){
$sql="SELECT IDCity, IDDepartement, CityName FROM tblCities WHERE IDDepartement=".$dpt;
$q = $this->conn->prepare($sql);
$q->execute();
$row=$q -> fetchAll();
return $row;
}
}
[{"IDCity":"22","0":"22","IDDepartement":"5","1":"5","CityName":"Hinche","2":"Hinche"},{"IDCity":"23","0":"23","IDDepartement":"5","1":"5","CityName":"Mirebalais","2":"Mirebalais"}]
<?php
//Output list of cities based on departments selected
include_once '../core/classes/bbClasses.php';
$d=$_POST['d']; //array of departments selected
$base= new workingDB();
$villes=$base ->loadCities($d);
echo json_encode($villes);
$base="";
?>