如果我使用 dataType:'json':
,我收到的错误是这样的未捕获类型错误:无法读取未定义的属性“长度”
如果我使用
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);
我的错误是什么?我没有从该页面传递 JSON 对象吗?如何在 success 函数中通过 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;
});
});
您正在以纯文本形式发送数组。需要将其序列化为 JSON。我不知道 php 的语法,你需要查一下。您可以通过从 Postman 或 Fiddler 进行调用来测试这一点,您将看到响应类型。
您已经将数组序列化为 json ,因此您无法以 html 数据类型访问该数组。您需要以 html 形式返回数据,以便在 js 中以 html 格式访问它。
最佳实践是使用 print_r 而不是 echo 来打印数组。 echo 无法打印 php 中的数组元素。
<?php print_r($json) ?>
然后使用 foreach 循环来循环元素。
我认为您需要添加如下所示的密钥!
$json['data']=array();
$json['data'] = array("type"=>$carType,"maker"=>$carMaker,"rate"=>$selectRate);
echo json_encode($json);
请参考this链接访问json对象并在浏览器控制台中查看结果