json_encode适用于整数,而不适用于字符串



我正试图将数组从php传递到js,json_encode函数对$MID(整数数组(有效,但对$name(字符串数组(无效。

有人能帮我理解为什么它不起作用吗?

$sql = "SELECT DISTINCT [materialID],[name],[categoryName],[materialResponsePerson] 
FROM [SAP_Replication].[dbo].[IntranetProductResponsePerson]";
$params = array();
$stmt = sqlsrv_query( $conn, $sql, $params);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
$MID = array();
$name = array();
$cName = array();
$resPerson = array();
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
array_push($MID,$row["materialID"]);
array_push($name,$row["name"]);
array_push($cName,$row["categoryName"]);
array_push($resPerson,$row["materialResponsePerson"]);
}
echo json_encode($MID); //works and returns values
echo json_encode($name); //returns bool(false)
sqlsrv_close($conn);

只回显一件事到Javascript!它期望从您的PHP代码中得到一个回复,而不是4。

所以我会做

echo json_encode([  'MID'       => $MID, 
'name'      => $name, 
'cName'     => $cName,
'resPerson' => $resPerson
]);

然后更改js代码以从正确的对象读取数据

我在注释代码时犯了一个错误。当我var_dump$name变量时,它会返回bool(false(。后来我发现,这意味着json_encode不支持有"Ş"、"ž"one_answers"…"的字符串在它们中,所以我需要将数组转换为utf-8。感谢大家的帮助。

最新更新