1

下面我给出了我的代码,它是一个调用php文件并获取json数据的javascript函数....所有的东西都很完美,但是当我想要添加时,我遇到了问题数据到多维数组.. ..对于这个noob问题抱歉..我不知道它可以做或不。在javascript多维数组中分配对象给数组

什么我想要做的

  1. 我想检索ajax调用数据,并且这些数据保存到数组
  2. 所以我不需要再打电话,如果我再需要数据
  3. 所以我想将数据存储在多维数组中,这将有两个键
  4. 第一个键将是数组的长度
  5. 第二个将是我的数据的dataType可以是“n ame“,”id“,”description“
  6. 是这样做的正确方法
  7. 如果不是那么我应该试试...?帮我...!!!
  8. 或者我可以设专职jsondata对象数据从Ajax调用成功,得到了一个数组

我的问题的新增需求 它就像我的数据的PHP数组关联数组类似于

$data[0]["id"] = 1; 
$data[0]["name"] = "spomething"; 
$data[0]["descriptoon"] = "spomething"; 
$data[0]["image"] = "spomething"; 

//for second item 
$data[1]["id"] = 1; 
$data[1]["name"] = "spomething"; 
$data[1]["descriptoon"] = "spomething"; 
$data[1]["image"] = "spomething"; 

所以我想为javascript创建相同的数组...我为每个项目取...从ajax ../并包括到javascript数组中...

$('.searchButton').bind("mouseover", function() { 

     var data = $(this).parents('.item').attr('id'); 
     var type = $(this).parents('.tab-pane').attr('id'); 
     // dataArray will be global javascript variable because of its needdss... it will be outside the function 
     var dataArray = new Array(); 

     $.ajax({ 
      type: 'GET', 
      url: '<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data, 
      dataType: 'json', 
      async: false, 
      success: function(data){ 
       var dataArrayLength = dataArray.length; 


      dataArray.push({dataArrayLength:data}); 

     console.log(dataArray[0]);            

      } 
     });  
    }); 

现在我改变我的代码在你的建议的基础上,我可以通过push fn来推送数据对象...现在我该如何从该对象调用数据....!

Object {dataArrayLength: Object} 
dataArrayLength: Object 
description: "World famous roasted Chicken, avacado, fresh mushrooms, red onions.  Mozzarella cheese and our secret sauce." 
id: "11" 
images: "/htdocs/kiosk/images/dining/items/pizzas/11.jpg" 
name: "Bella Notte Signature Pizza" 
price: "4.50" 
raters: "10" 
ratings: "1" 
__proto__: Object 
__proto__: Object 

这是的console.log输出(dataArray中的[0]) ...所以现在我想“ID”,“姓名”,“说明”从中我怎么能做到这一点... ????/

我的问题的解决方案

success:function(data){  
var dataArrayLength = dataArray.length; 

dataArray.push(data); 
dataArray.forEach(function(object,index){ 
console.log(object.id); 
console.log(object.name); 
console.log(object.description); 
console.log(object.image); 
console.log(object.ratings); 
}); 

,这就是我想做的事情......

回答

2

试试这个:

$.ajax({ 
type:'GET', 
url:'<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data, 
dataType: 'json', 
async: false, 
success:function(data){ 
    dataArray = []; // empty it before pushing data into it... 
    dataArray.push(data); 
} 
});  

我相信你可以直接推动数据对象dataArray的。 当你访问这个简单的访问时,它像dataArray [i] .id,dataArray [i] .name等所有的数据键。

+0

每次我只打电话一项数据,但它会当我调用另一个项目时会增加...在这里我已经说过我会在ajax调用之前检查dataArray如果数据存在,它将不会调用,如果不是它将调用ajax的项目...我的观点是json数据将会只有一个项目..但是当我cvall再次它将会增加... –

+0

你的意思是,如果你已经有dataArray中的数据,那么你不想做一个AJAX调用,我是否把你逼到? – robieee

+0

是的,但..谢谢..我想通了...看一些问题后,我会写我的解决方案....感谢你的帮助哥们... –

2

我不太清楚IU nderstand,但不能你只需要做:

$.ajax({ 
    type:'GET', 
    url:'<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data, 
    dataType: 'json', 
    async: false, 
    success:function(data){ 
     var dataArrayLength = dataArray.length; 
     dataArray.push({'id':data.id,'name':data.name,'image':data.image,'description':data.description}); 
    } 
     });    

}); 

甚至:

dataArray.push(data); 

我还没有测试,所以认为这是伪代码,但我相信的是,推法是你在找什么?

+0

是的..但我想存储的数据多于一个项目...它就像人名的facebook popover当你把鼠标放在名字上时,你得到了人物图像名称和所有的数据....他们保存该数据的东西,当你鼠标悬停在另一个名称,你得到的人的数据也......数据也得到保存......所以,我想保存所有的项目上的用户鼠标悬停的数据...所以whenevre用户mouseover on the existing data ...它不会调用ajax函数.. –

+0

'Array.push'只是将该对象添加为数组中的下一个元素,因此您可以根据需要添加任意数量的对象(JS的限制虽然)。 – Andy

+0

安迪itrs非常有帮助,但我想crteate别的..再次看到我的问题,我编辑了它...并添加了一些适当的东西,我想要做的... –