我试图使用phonegap制作应用程序。我正在尝试使用php进行选择将结果返回到ajax函数并打印结果...但我不知道我是否做得对,我需要在html代码中放置以显示结果。
AJAX代码:
$(document).ready(function() {
$.ajax({
url : 'http://ip/again/www/index.php',
dataType : "json",
success : function(data){
var html = "";
for($i=0; $i < data.length; $i++){
html += "<strong>Nome:</strong> "+data[$i].nome +" "+
data[$i].sobreNome;
html += " <strong>Cidade:</strong> "+data[$i].cidade;
html += "<br />";
}
$('body').html(html);
}
});
});
</script>
PHP代码:
<?php
$hostname = 'localhost';
$username = 'root';
$password = 'pass';
$database = 'mydb';
try {
$pdo = new PDO("mysql:host=$hostname;dbname=$database", $username,
$password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
//echo 'Conexao efetuada com sucesso!';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$sql = 'SELECT * FROM incidente ORDER BY codigo' ;
try {
$recebeConexao = $pdo->prepare($sql);
$recebeConexao->execute();
$result = $recebeConexao->fetchAll();
if ( count($result) ) {
foreach($result as $row) {
$incid=$row;
echo (json_encode($incid));
}
} else {
$incid=0;
}
} catch (PDOException $ex) {
echo "Erro no Banco";
}
?>
答案 0 :(得分:0)
您正在错误地编写for
循环。您必须使用var
关键字声明您的变量,如下所示:
for(var $i = 0; $i < data.length; $i++) {
// ...
}
由于您的脚本未返回数组,因此length
属性将不可用。
当您在Javascript中处理对象时,您需要使用for...in
语法(making sure to validate that the property belongs to the object you're iterating over)。
但是,您提供的代码不会返回对象或数组,因为JSON格式不正确。
API返回多个无序Javascript对象的正确方法是将它们包装在一个数组中,如下所示:
if(count($result)) {
$list = array();
foreach($result as $row) {
$list[] = $row;
}
echo json_encode($list);
}
$.ajax({
// ...
success: function (data) {
// Loop over each object, since your script should ideally return an array
for (var $i = 0; $i < data.length; $i++) {
var object = data[$i];
html += '<strong>Nome:</strong> ' + object.nome + ' ' + object.sobreNome;
// etc...
}
}
});