如果我使用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;
});
});
答案 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循环来循环元素。