无法显示JSON对象

时间:2015-07-21 11:59:59

标签: jquery arrays json

如果我使用dataType,我得到的错误是:' json':

  

未捕获的TypeError:无法读取属性'长度'未定义的

如果我使用dataType:'html',那么我可以看到数组在控制台中通过php页面传递,如下所示:

[{
    "type": ["4 wheeler", "flying car", "test type"],
    "maker": ["Honda", "Audi", "test car"],
    "rate": [
        ["0", "78"],
        ["0", "56"],
        ["0", "34"],
        ["2", "78"],
        ["2", "56"],
        ["2", "34"],
        ["1", "89"],
        ["1", "7"],
        ["1", "56"]
    ]
}]

在我的php页面中,这就是我传递多维数组的方式。

$json=array();
array_push($json,array("type"=>$carType,"maker"=>$carMaker,"rate"=>$selectRate));
echo json_encode($json);

我的错误是什么? AM我没有从这个页面传递JSON对象?如何通过成功函数中的jquery访问每个数组中的每个元素?

ajax的完整代码

$("#submit").on("click",function()
    {

          $("#set_setting").submit(function(){            

            data = $(this).serialize()
            $.ajax({
              type: "POST",
              dataType: "html",
              url: "submit_setting.php", //Relative or absolute path to response.php file
              data: data,
               success: function(data) {
                   //alert(JSON.stringify(data));
                   //data=JSON.stringify(data);
                   console.log(data);
                     //hide the form
                     $("#set_setting").slideUp("slow");

                     //show the result


                      $.each( data.type, function( index, value ){
                           console.log(value);
                      });
                 }

            });
            return false;

          });

        });

3 个答案:

答案 0 :(得分:0)

您将以纯文本形式发送数组。它需要序列化为JSON。我不知道php中的语法,你需要查看它。您可以通过Postman或Fiddler进行调用来测试这一点,您将看到响应类型。

答案 1 :(得分:0)

你需要添加如下所示的密钥!

$json['data']=array(); 
$json['data'] = array("type"=>$carType,"maker"=>$carMaker,"rate"=>$selectRate); 
echo json_encode($json);

请参阅this链接以获取访问json对象的信息,并在浏览器控制台中查看结果

答案 2 :(得分:0)

您已将数组序列化为json,因此您无法以html数据类型访问该数组。您需要将数据作为html返回,以便在js中以html格式访问它。

最佳做法是使用print_r而不是echo来打印数组。 echo不能在php中打印数组元素。

 <?php print_r($json) ?>

然后使用foreach循环来循环元素。