我通过php文件从我的服务器获取一个json字符串,包含25餐。 php由javascript函数启动。然后我希望将json转换为对象数组。
响应流具有正确的值。 alert()在每一步显示正确的值。 完成整个流后,阵列突然再次变空。这是我的问题,我在这个问题上迷失了,甚至不知道该怎么去谷歌。
我只是粘贴我的php和javascript代码。请注意javascript代码末尾的3 Alert(),它们会显示会发生什么。
这是php
<?php
$mysqlHOST = "localhost";
$mysqlUSER = "xxx";
$mysqlPW = "xxx";
$mysqlDB = "xxx";
$mysqlERROR = "Could not connect to database!";
$mysqlERRORDB = "Could not connect to database - DB-Error!";
@mysql_connect($mysqlHOST,$mysqlUSER,$mysqlPW) or die($mysqlERROR);
@mysql_select_db($mysqlDB) or die($mysqlERRORDB);
@mysql_query('SET CHARACTER SET utf8');
$res = mysql_query("SELECT * FROM Rezepte");
while($Row = mysql_fetch_array($res))
{
$jsondata[]= array('f1'=>$Row["id"], 'f2'=>$Row["data"], 'f3'=>$Row["art"],'f4'=>$Row["name"],'f5'=>$Row["zutaten"],'f6'=>$Row["info"],'f7'=>$Row["bild"]);
};
echo(json_encode($jsondata));
?>
这是Javascript。
//Variablen
varRezepte = []; //Liste mit den Rezeptobjecten
//Konstruktor für die Rezept - Objekte
function objRezept(varid, data, art, name, zutaten, info, bild)
{
this.varid = varid;
this.data = data;
this.art = art;
this.name = name;
this.zutaten = zutaten;
this.info = info;
this.bild = bild;
}
//wenn Page gepaden ist soll das folgende passieren
$(function()
{
//Datenbank bemühen um die Rezepte herzubekommen
$.ajax({
type: "POST",
url: "planerDB.php",
dataType: "json",
success: function (data)
{
for(var i = 0;i < data.length;i++)
{
var item = data[i];
varRezepte.push(new objRezept(item.f1, item.f2, item.f3, item.f4, item.f5, item.f6, item.f7));
alert(varRezepte[i].name); //correct output
}
}
});
alert(varRezepte[0].name); //undefined
alert(varRezepte.length); //zero
});
答案 0 :(得分:2)
该行执行时为空并记住.. Ajax 异步
语句甚至在请求完成之前执行。所以在你提到的那一点上它总是未定义的。
答案 1 :(得分:0)
您的最后2 alert
不在回调范围内,并且在ajax
完成且没有数据之前执行。