Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一组突然空了的物体_Php_Javascript_Jquery - Fatal编程技术网

Php 一组突然空了的物体

Php 一组突然空了的物体,php,javascript,jquery,Php,Javascript,Jquery,我通过一个php文件从我的服务器上得到一个json字符串,包含25顿饭。php由javascript函数启动。然后我希望json被转换成一个对象数组 Response流具有正确的值。 alert()在每个步骤上显示正确的值。 完成完整流后,数组突然再次变空。这是我的问题,我迷失在这一点上,甚至不知道谷歌该做什么 我将只粘贴来自php和javascript的代码。请注意javascript代码末尾的3 Alert(),它们显示了发生的情况 这里是php <?php $mysqlHOST =

我通过一个php文件从我的服务器上得到一个json字符串,包含25顿饭。php由javascript函数启动。然后我希望json被转换成一个对象数组

Response流具有正确的值。 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
});
//Variablen
varRezepte=[]//这是一个很好的例子
//康斯特鲁克托·弗尔·迪雷泽普特-奥布杰克特
函数对象(变量、数据、艺术、名称、zutaten、信息、图片)
{
this.varid=varid;
这个数据=数据;
艺术=艺术;
this.name=名称;
this.zutaten=zutaten;
this.info=info;
this.bild=bild;
}
//这是唯一的民俗通行证
$(函数()
{   
//我们的银行是世界银行
$.ajax({
类型:“POST”,
url:“planerDB.php”,
数据类型:“json”,
成功:功能(数据)
{
对于(变量i=0;i
行执行时它是空的,请记住。。Ajax是异步的


该语句甚至在请求完成之前执行。因此,在您提到的点上,它始终是未定义的。

您的最后2个
警报
在回调之外,在
ajax
完成之前执行,并且没有数据。

回答很好,很简短,但非常有用,并解释了我的明显错误。我知道Ajax是异步的,但在我当前的项目中它没有考虑到这一点。到处都在看1000件其他的东西。非常感谢@拉滕曼。。很高兴能帮忙:)