Php 数组长度显示超出预期值
我正在使用ajax和json从MySQL获取一些表列数据,需要将这些值显示到相应的输入id标记中。但它没有显示值,数组长度显示超出预期。预期长度值为8,但在控制台中显示101。 控制台中的数据和数组Php 数组长度显示超出预期值,php,jquery,arrays,ajax,Php,Jquery,Arrays,Ajax,我正在使用ajax和json从MySQL获取一些表列数据,需要将这些值显示到相应的输入id标记中。但它没有显示值,数组长度显示超出预期。预期长度值为8,但在控制台中显示101。 控制台中的数据和数组 [{"name":"adasdas", "gen":"F", "add":"asdasd", "dob":"2019-09-25", "ag":"25", "mob":"65165165", "tel":"1"}] 我
[{"name":"adasdas",
"gen":"F",
"add":"asdasd",
"dob":"2019-09-25",
"ag":"25",
"mob":"65165165",
"tel":"1"}]
我的ajax请求是这样的
$('#add').click(function(event){
event.preventDefault();
var patient_no = $('.patient_no').val();
$.ajax({
url : 'get_visit_details.php',
type : 'post',
data :{patient_no:patient_no},
datatype : 'json',
success:function(data){
var len = data.length;
console.log(len);
console.log(data);
for(var i = 0;i < len; i++){
var pat_name = data[i]['name'];
var gender = data[i]['gen'];
var address = data[i]['add'];
var d_birth = data[i]['dob'];
var age = data[i]['ag'];
var mobile = data[i]['mob'];
var tele = data[i]['tel'];
$('.pat_name').val(pat_name);
$('.gender').val(gender);
$('.address').val(address);
$('.d_birth').val(d_birth);
$('.age').val(age);
$('.tele').val(tele);
$('.mobile').val(mobile);
}
}
});
});
$patient_no = $_POST['patient_no'];
$sql = "SELECT pat_name,gender,address,d_birth,age,mobile,tele,reg_no
FROM patient
WHERE reg_no = '$patient_no' ";
$result = query($sql);
confirm($result);
if($row = fetch_array($result)) {
$pat_name = $row['pat_name'];
$gender = $row['gender'];
$address = $row['address'];
$d_birth = $row['d_birth'];
$age = $row['age'];
$mobile = $row['mobile'];
$tele = $row['tele'];
}
$patient_data = array();
$patient_data[] = array("name" => $pat_name,"gen" => $gender, "add" => $address ,"dob" => $d_birth ,
"ag" => $age , "mob" => $mobile,"tel" => $tele);
echo json_encode($patient_data);
101是字符串的长度
[{"name":"adasdas","gen":"F","add":"asdasd","dob":"2019-09-25","ag":"25","mob":"65165165","tel":"1"}]
预期结果为“1”,因为json数组中有7个json对象
JavaScrip不能解码de Json?试着这样做
var obj = jQuery.parseJSON( '[{"name":"adasdas","gen":"F","add":"asdasd","dob":"2019-09-25","ag":"25","mob":"65165165","tel":"1"}]' );
console.log(obj.length);
这必须返回1
console.log(obj[0].name)
这必须返回“adasdas”
我在开发人员控制台中测试,如果不工作,可能的php输出包含ilegal字符,则在“raw”中显示php输出(在webbrowser中单击“查看源代码”),因为我可以看到数据是数组对象。所以得到如下的长度
var data_count = Object.keys(data).length;
console.log(data_count);
如果您想获得对象的长度,请使用
Object.getOwnPropertyNames(data).length
您所展示的是包含一个元素的数组的JSON表示。(该元素本身就是一个对象。)您的服务器端代码甚至不会循环,因此它最多可以将一条记录放在数组中。那你为什么还要在客户端循环呢?似乎没有什么意义。只需先检查服务器端的值。然后检查客户端。