Php 返回[object object]而不是数组的Json
我将json数据输入Sencha touch应用程序。以下是json: -(当然,为了示例而修改) 当我返回“images”和console.log时,它将返回以下内容:Php 返回[object object]而不是数组的Json,php,javascript,json,sencha-touch,Php,Javascript,Json,Sencha Touch,我将json数据输入Sencha touch应用程序。以下是json: -(当然,为了示例而修改) 当我返回“images”和console.log时,它将返回以下内容: images: "[object Object],[object Object],[object Object],[object Object],[object Object]" 而不是URL 我的json编码器如下所示(我正在从Wordpress站点提取数据): 我希望它能返回图像URL数组,而不是我当前得到的[objec
images: "[object Object],[object Object],[object Object],[object Object],[object Object]"
而不是URL
我的json编码器如下所示(我正在从Wordpress站点提取数据):
我希望它能返回图像URL数组,而不是我当前得到的[object]
编辑:下面是我用来尝试拉出imageurl的sencha代码:
console.log(this.record.data);
console.log(this.record.data.images);
console.log(this.record.data.images.length);
var numberOfPages = this.record.data.images.length;
// Create pages for the carousel
var pages = [];
for (var i=0; i<numberOfPages; i++) {
pages.push(new Ext.Component({
id: 'page'+i,
cls: 'page',
tpl: '<tpl for=".">{imageurl}</tpl>',
//html:'test',
}));
}
// Create the carousel
this.carousel = new Ext.Carousel({
id: 'carousel',
title:'Gallery',
iconCls:'photos2',
defaults: {
cls: 'card'
},
items: pages,
});
console.log(this.record.data);
log(this.record.data.images);
log(this.record.data.images.length);
var numberOfPages=this.record.data.images.length;
//为旋转木马创建页面
var页面=[];
对于(var i=0;i在PHP中编码为JSON的关联数组,解码后会变成JavaScript中的对象。您看到的是正确和正常的。像访问JavaScript中的任何其他对象一样访问它们。更新:抱歉,对于我给出的不相关示例
你的页面[i]在哪里?更新(this.record.data.images);
你可以试试下面的方法-
var numberOfPages = this.record.data.length;
// Create pages for the carousel
var pages = [];
for (var i=0; i<numberOfPages; i++) {
var tmp = new Ext.Component({
id: 'page'+i,
cls: 'page',
tpl: '<tpl for=".">{imageurl}</tpl>'
});
tmp.update(this.record.data[i].images);
pages.push(tmp);
}
var numberOfPages=this.record.data.length;
//为旋转木马创建页面
var页面=[];
因为(var i=0;i找到了答案,把它交给了里法特,因为他的答案是跳板
我把[object object]作为一个文字字符串来处理。我在Sencha touch之外编写了一个quick test.php,并能够让实际数组工作。我的第一个问题是json本身——它需要验证。你们都是正确的,感谢你们提供的线索
第二,当我让test.php文档正常工作时,我意识到它必须在Sencha本身中。字符串与它有关的唠叨感觉一直萦绕在我的脑海中。最后,我去了我的模型,发现我是如何提取图像的:
{name: "images", type: "string"},
我看到了字符串,然后啊哈一刻击中了它!这修复了它并给了我我的URL:
{name: "images"},
非常感谢Ignacio和Rifat。你们和我在一起,得到了(最终)出现的答案。再次感谢,希望这能帮助其他可能遇到类似问题的人。我曾经在javascript后端遇到过类似问题。以下是使用JS的人的答案:
在发送对象数组之前,请确保对其进行字符串化:
JSON.stringify(array[i]);
当然,除非您只发送JSON,在这种情况下,发送常规JSON应该可以正常工作:)这是否在IE的调试工具中?你是加入数组还是什么?你只有在将一个对象转换为字符串时才会得到这个。所以你的意思是我需要在Sencha Touchs end上解码它们?我不需要对任何其他数据进行解码,为什么要用这个?只是为了澄清它返回的是一个[object]字符串,而不是一个可以看到URL的数组。如果我执行record.data.length,它会给我一个字符计数,而不是说数组中有5个图像。它不会返回“[object]”字符串,它返回的对象在转换为字符串时与之类似。因此,我遗漏了一些东西。当请求json对象出现在应用程序中时,我需要对其进行解码?我是否应该能够打开控制台并查看日志并查看对象值?1)它们已经解码。2) 你为什么相信JavaScript是这样工作的。好的,2。老实说,无知。我要做的是使用sencha从对象中获取imageurl。我将使用sencha代码更新我的问题,我将使用该代码获取图像/imageurl。谢谢你的帮助和理解这个好主意,但有两个问题:1。numberofpages返回一个字符计数(一个例子是它创建了75张卡片,而不是5张用于图像)。2.this.record.data.images[i].imageurl只返回一张空卡,不返回任何内容。也许我没有激发imageurl?你能发布一个正确的JSON输出吗。您在上面提出的一个已被破坏:|我的json很长,但这里有一个新的pastbin,只有一篇文章,我认为它是正确的:为了回答您的更新问题,我的控制器使用以下命令将数据馈送到容器:var singlePost=App.views.postView.add({xtype:'postsingleview',record:options.record});我使用默认功能提取数据:默认值:{data:this.record.data}我认为它的方向是正确的,但是现在没有卡片出现,我不认为this.record.data.images调用了正确的数据。log(this.record.data.images);仅产生[对象对象],[对象对象],[对象对象],[对象对象对象],[对象对象]
JSON.stringify(array[i]);