首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得json javascript的长度

无法获得json javascript的长度
EN

Stack Overflow用户
提问于 2013-08-23 20:27:54
回答 2查看 223关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
 $.ajax({
        url: 'carrinho/fretecheckout/',
        data: {cep: cep, peso: peso, valor: valor, dimensoes: dimensoes, ids: ids},
        dataType : 'json',
        complete: function() {
            $('#checkoutBody').removeClass("loadingfrete");
        },
        success: function(data) {                
            $('#carrinhocep').val(cep);
            var frete = data;
            $('.segundopassofrete').html('');
            $('#freteselecionado').remove();
            for (var i = 0; i < frete['frete'].length; i++) {               

此代码返回给我它(Localhost):

代码语言:javascript
复制
{"frete":[{"peso":"49300","classificador":"Retira","fk_frete":"15","prazo":"Prazo de entrega at\u00e9 2 dias","fk_classificador":"445","fator_cubagem":"4800","peso_real":"1","peso_cubado":"0","fk_fre_peso":"0","fk_fichario":"61440","transportadora":"N","preco_min":"0.00","gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":"0.001","valor":"0.001"},{"peso":"49300","classificador":"Moto boy","fk_frete":"17","prazo":"Prazo de entrega 1 dia","fk_classificador":"151","fator_cubagem":"4800","peso_real":"1","peso_cubado":"0","fk_fre_peso":"0","fk_fichario":"60646","transportadora":"N","preco_min":"0.00","gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":0.0319249,"valor":0.0319249},{"fk_frete":"27","classificador":"Trans. Jamef","prazo":"De 5 a 10 dias ap\u00f3s o envio","valor":223.54,"transportadora":null,"fk_classificador":null},{"peso":289260,"classificador":"Transportadora","fk_frete":"28","prazo":"Prazo de entrega 10 dias","fk_classificador":"405","fator_cubagem":"3333","peso_real":"1","peso_cubado":"1","fk_fre_peso":"0","fk_fichario":"56080","transportadora":"Y","preco_min":"0.00","gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":0,"kiloadd":"1.000","valor":10.61}],"cidade":{"cidade":{"id":"6268","nome":"Londrina"},"estado":{"id":"17","nome":"Paran\u00e1","uf":"PR"}}}

以下是服务器的响应:

代码语言:javascript
复制
{"frete":[{"peso":"4000","classificador":"taxi","fk_frete":"5","prazo":"Prazo de entrega 10 dias","fk_classificador":"357","fator_cubagem":"4800","peso_real":"1","peso_cubado":"0","fk_fre_peso":"0","fk_fichario":"207","transportadora":"N","preco_min":"100.00","gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":"11.000","valor":"11.000"},{"peso":10450,"classificador":"Trans. Braspress","fk_frete":"6","prazo":"Prazo de entrega 10 dias","fk_classificador":"837","fator_cubagem":"3333","peso_real":"1","peso_cubado":"1","fk_fre_peso":"0","fk_fichario":"773","transportadora":"Y","preco_min":"0.00","gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":"3050.000","valor":"3050.000"},{"peso":7260,"classificador":"BYH","fk_frete":"9","prazo":"Prazo de entrega entre 15 a 35 dias \u00fateis","fk_classificador":"1760","fator_cubagem":"4800","peso_real":"1","peso_cubado":"1","fk_fre_peso":null,"fk_fichario":"786","transportadora":"N","preco_min":null,"gratis":"0","gratis_produtos":null,"exibir_estados":"0","imagem":null,"preco":"0.001","valor":"0.001"},{"valor":46.03,"prazo":"At\u00e9 8 dias ap\u00f3s o envio","cod":"41106","transportadora":"N","fk_frete":"1","classificador":"PAC"},{"valor":49.73,"prazo":"At\u00e9 7 dias ap\u00f3s o envio","cod":"40010","transportadora":"N","fk_frete":"2","classificador":"sedex"}],"cidade":{"cidade":{"id":"5895","nome":"Camb\u00e9"},"estado":{"id":"17","nome":"Paran\u00e1","uf":"PR"}}}

在此之前一切都还好。

所以:

我需要迭代这个对象,并为每个"frete“做一些事情。直到10分钟前一切都很顺利。

现在我正在尝试测试其他的东西,而这段代码在没有任何改变的情况下就停止了工作。

我调试了代码,得到的结果是:

代码语言:javascript
复制
  for (var i = 0; i < frete['frete'].length; i++) {                 

它只是没有进入循环。当我检查frete['frete'].length是否有什么东西时,我会得到“未定义”。

所以frete.frete.length也没有定义,frete.length也没有定义,我尝试了所有你能想象到的东西,但是它不起作用。

如果我检查frete,就会得到[Object object],所以这可能是JSON中的一个问题。

最奇怪的是,在我的本地主机上,它能工作,在我搭档的电脑上,Chrome运行得很好,而对我的搭档来说,它对火狐不起作用。在我的计算机上,它不能同时在两种情况下工作,但是在本地主机上工作得很好。我有几张屏幕截图要解释得更清楚:

在本地主机上工作:藏红花

不适用于产品:生产

检查运行中的firebug:火虫

谁能给我点主意吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 19:24:15

PHP代码中的问题。我能清楚地看到你对JSON的回应

您的本地主机PHP似乎是正确的。因为“使用localhost:http://prntscr.com/1mzwgc”是针对JSON中的"frete“键提供数组,而在生产( http://prntscr.com/1mzw4w)中,针对"frete”键的值是一个对象。除了"for-in循环“之外,不能对对象使用普通的"for循环”。

祝好运

票数 1
EN

Stack Overflow用户

发布于 2013-10-18 18:20:05

我只是将您的json结果存储在一个名为'obj‘的变量中。

代码语言:javascript
复制
var obj = {
"frete": [
    {
        "peso": "49300",
        "classificador": "Retira",
        "fk_frete": "15",
        "prazo": "Prazo de entrega até 2 dias",
        "fk_classificador": "445",
        "fator_cubagem": "4800",
        "peso_real": "1",
        "peso_cubado": "0",
        "fk_fre_peso": "0",
        "fk_fichario": "61440",
        "transportadora": "N",
        "preco_min": "0.00",
        "gratis": "0",
        "gratis_produtos": null,
        "exibir_estados": "0",
        "imagem": null,
        "preco": "0.001",
        "valor": "0.001"
    },
    {
        "peso": "49300",
        "classificador": "Moto boy",
        "fk_frete": "17",
        "prazo": "Prazo de entrega 1 dia",
        "fk_classificador": "151",
        "fator_cubagem": "4800",
        "peso_real": "1",
        "peso_cubado": "0",
        "fk_fre_peso": "0",
        "fk_fichario": "60646",
        "transportadora": "N",
        "preco_min": "0.00",
        "gratis": "0",
        "gratis_produtos": null,
        "exibir_estados": "0",
        "imagem": null,
        "preco": 0.0319249,
        "valor": 0.0319249
    },
    {
        "fk_frete": "27",
        "classificador": "Trans. Jamef",
        "prazo": "De 5 a 10 dias após o envio",
        "valor": 223.54,
        "transportadora": null,
        "fk_classificador": null
    },
    {
        "peso": 289260,
        "classificador": "Transportadora",
        "fk_frete": "28",
        "prazo": "Prazo de entrega 10 dias",
        "fk_classificador": "405",
        "fator_cubagem": "3333",
        "peso_real": "1",
        "peso_cubado": "1",
        "fk_fre_peso": "0",
        "fk_fichario": "56080",
        "transportadora": "Y",
        "preco_min": "0.00",
        "gratis": "0",
        "gratis_produtos": null,
        "exibir_estados": "0",
        "imagem": null,
        "preco": 0,
        "kiloadd": "1.000",
        "valor": 10.61
    }
],
"cidade": {
    "cidade": {
        "id": "6268",
        "nome": "Londrina"
    },
    "estado": {
        "id": "17",
        "nome": "Paraná",
        "uf": "PR"
    }
}
}


alert(obj.frete.length);

检查结果,结果是4。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18411305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档