带有以下功能我从数据库中获取数据:
public function cargarPaises(){
$modelo = new Conexion();
$conexion = $modelo->get_conexion();
$sql = "select idPais, nombre from paises";
$statement = $conexion->prepare($sql);
$statement->execute();
return $statement;
}
然后,在其他文件中,我将函数称为" cargarpaises":
<?php
require_once('../Modelo/class.conexion.php');
require_once('../Modelo/class.consultas.php');
$consultas = new Consultas();
$datos = $consultas->cargarPaises();
if (count($datos) > 0) {
while ($result = $datos->fetch(PDO::FETCH_ASSOC)) {
//printf ("%s (%s)n", $result["idPais"], $result["nombre"]);echo"<br>";
//return $result;
//$nombre=$result['nombre'];
//$idPais=$result['idPais'];
//echo "<option value=".$idPais.">".$nombre."</option>n";
//echo json_encode($result,JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS);
echo json_encode($result);
}
}else{
return "No hay opciones en la BD";
}
?>
现在,当我尝试在jQuery文件中使用代码时:
$('#email').click(function(event) {
$.get('Controlador/cargarPaises.php', function(data) {
console.log(data);
});
});
我在控制台(Google Chrome(中获得了以下内容,我的数据库中的所有427个记录(我仅显示10(:
echo json_encode($result); i got in console
{"idPais":"1","nombre":"Mexico"}
{"idPais":"3","nombre":"Albania"}
{"idPais":"4","nombre":"Alemania"}
{"idPais":"5","nombre":"Andorra"}
{"idPais":"6","nombre":"Angola"}
{"idPais":"7","nombre":"Antigua y barbuda"}
{"idPais":"8","nombre":"Antillas holandesas"}
{"idPais":"10","nombre":"Argelia"}
现在的问题是如何使用变量"数据"播放"以填充选择的HTML元素。
首先,您的cargarpaises文件中有一个错误。您正在回应每行的JSON编码对象 - 您实际上可能想返回一系列对象作为单个JSON结果。您还将返回一个错误,而不是一个会让您知道的对象。最后,您正在获得PDO语句的计数,而不是RowCount。这样的事情会更好:
if ($datos->rowCount() > 0) {
echo json_encode($datos->fetchAll(PDO::FETCH_ASSOC));
} else {
echo json_encode(array());
}
我可能还会修改您的.get要求开始明确说明您要获取JSON,然后添加类似以下内容以构建选项:
$.get('Controlador/cargarPaises.php', function(data) {
$.each(data, function(idx, opt) {
$('#myselect').append('<option value="' + opt.idPais + '">' + opt.nombre + '</option>');
});
}, 'json');
public function cargarPaises(){
$modelo = new Conexion();
$conexion = $modelo->get_conexion();
$sql = "select idPais, nombre from paises where 1"; //changed
$statement = $conexion->prepare($sql);
return $statement->fetchAll(PDO::FETCH_ASSOC); //changed
}
和第二个文件
require_once('../Modelo/class.conexion.php');
require_once('../Modelo/class.consultas.php');
$consultas = new Consultas();
$datos = $consultas->cargarPaises();
$results = (count($datos) > 0) ? $datos : array("error"=>"No hay opciones en la BD");
echo json_encode($results);