0

我试图查询MySQL数据库,并使用JSON将结果放入jQuery,因为我需要绘制图形。

我的问题是当我操作JSON时。

我目前的代码:索引.php

$(函数($){$(“#formulario”).submit(函数(){var-nome=$(“#nome”).val();$(“#status”).html(“<img src='loader.gif'alt='Enviando'/>”);$.post('envia.php'{nome:命名},功能(resposta){$(“#状态”).slideDown();if(resposta!=假){$(“#status”).html(resposta);}其他{$(“#nome”).val(“”);}});});});

envia.php公司(该查询仅用于测试)

require_once(“conecta.php”);$nome=$_POST[“nome”];$culturas=数组();$resultado=mysqli_query($conexao,“从mandioca_iea中选择*,其中mandioca_iea_id=1”);while($cultura=mysqli_fetch_assoc($resultado)){array_push($culturas,$cultua);}echo json_encode($culturas);

如果我以这种方式测试代码:在div=“status”中出现:

[{“mandioca_ia_id”:“1”,“man_ins_area_00”:“0”,“man_ins_prod_00”:“0”,“man_ins_area_05”:“0”,“man_ins_prod_05”:“0”,“man_ins_area_10”:“0”,“man_ins_prod_10”:“0”,“man_ins_area_13”:“0”,“man_ins_prod_13”:“0”,“id_cid”:“1”,“id_cult”:“1”}]好的,它起作用了

但当我尝试使用此代码访问“字段”时,它不起作用:

$.post('envia.php',{nome:nome},函数(resposta){对于(var i=0;i<resposta.length;i++){var寄存器=resposta[i];控制台.log(注册表.man_ins_area_10);}});

OBS:我试过了resposta=$.parseJSON(resposta)也是。

在web浏览器控制台中,结果是:

228未定义,换句话说,发生228次“循环”,所有“变量”都未定义。

有人知道为什么会这样吗?

  • 因为没有国际能源协会id在json数据中。 评论 2015年1月30日13:26
  • 您的响应对象不包含国际能源协会id字段。 评论 2015年1月30日13:27
  • @鲁道夫·奥利维拉我认为你试图用错误的方式分析它。尝试在$.post函数中执行以下操作:var registro=JSON.parse(resposta);然后试试控制台.log(注册表.man_ins_area_10); 评论 2015年1月30日13:34

3个答案

重置为默认值
1

试着用适当的属性.因为没有国际能源协会id在您的json数据它没有给予任何东西。

var resposta=[{“mandioca_iea_id”:“1”,“man_ins_area_00”:“0”,“man _ins_prod_00”“:”0“,”man_ins_area_05“:”“0”“,”man _ins_prod_05“:”1“,”man_ins_are_10“:”零“,”men_ins_prod_10“:””0“、”man_inst_area_13“:”0“,”“man_inst_prod_13”:“”0“”,”id_cid“:”一“”,“id_cult”:“1}]for(变量i=0;i<呼吸长度;i++){var寄存器=resposta[i];控制台.log(注册表.mandioca_iea_id)//应该是1}

更新时间:

$.post('envia.php',{nome:nome},函数(resposta){控制台.log(resposta);var resposta=JSON.parse(resposta);对于(var i=0;i<resposta.length;i++){var寄存器=resposta[i];console.log(registro.customerLat);}});
5
  • 如果变量“reposta”来自php,则继续为“228 undefined”, 评论 2015年1月30日13:33
  • 对不起,我没有明白你到底想问什么。 评论 2015年1月30日13:36
  • 我没有10分的声誉,所以我不能发布图片。但当我用“var resposta=[{”mandioca_iea_id“:”1“,”man_ins_area_00“:”0“,”man _ins_prod_00“:”0“、”man _inst_area_05“:”“0”“,”man_ins_prod_05“:“0”,“man_ins_area_10”:“0“1”}]“工作正常。当我撤退时,这条线设置resposta(就像以前一样)不起作用。我不知道为什么:/ 评论 2015年1月30日13:44
  • 现在的错误是(“Uncaught SyntaxError:Unexpected token(” 评论 2015年1月30日13:50
  • 尝试更新后的版本,并使用开始调试数据控制台.log()控制台.info(). 评论 2015年1月30日16:33
0

编辑:除了注释“no-iea_id字段”之外。你能试试这个吗?我添加了“json”部分

$.post('envia.php',{nome:nome},函数(resposta){$(“#status”).slideDown();if(resposta!=假){$(“#status”).html(resposta);} 其他{$(“#nome”).val(“”);}},“json”//这指定结果是json对象);
0

对post数据参数进行字符串化。

//字符串化您的json post数据参数var postData=JSON.stringify({nome:nome});$.post('envia.php',postData,函数(resposta){//解析收到的json字符串resposta=$.parseJSON(resposta);对于(var i=0;i<resposta.length;i++){var寄存器=resposta[i];控制台.log(注册表.man_ins_area_10);}});

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.