使用以下功能,我从数据库中获取数据:
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);
});
});
我在控制台(谷歌浏览器)中得到了以下内容,我的数据库中的所有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"}
现在的问题是我怎样才能玩#34;用变量&#34;数据&#34;填充选择的HTML元素。
答案 0 :(得分:1)
首先,你的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');
答案 1 :(得分:0)
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);