我正在尝试从数据库中获取带有特殊字符(caron)的数据,并使用json_encode通过xmlhttp.responseText发送它以填充文本框。与包含特殊字符(caron)的数据关联的特定文本框不显示任何内容。其他文本框正在显示正确的数据。我尝试使用Javascript函数encodeURIComponent,但在文本框中只显示null。任何帮助将不胜感激。
主页代码:
function loadDoc()
{
var xmlhttp;
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
// code for IE6, IE5
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var a = JSON.parse(xmlhttp.responseText);
document.getElementById("textbox").value=a.first;
document.getElementById("textbox2").value=a.second;
document.getElementById("textbox3").value=a.third;
document.getElementById("textbox4").value=a.fourth;
document.getElementById("textbox5").value=a.fifth;
document.getElementById("textbox6").value=a.sixth;
}
}
xmlhttp.open("GET","loadTextBox.php?id=4",true);
xmlhttp.send();
}
loadTextBox.php代码:
<?php
header("Content-type: application/json");
---Placeholder for correct DB login info---
$result = $mysql->query(---Placeholder for correct SQL query---);
while ($row = $result->fetch_object())
{
$queryResult[] = $row->colun_one;
}
$textboxValue = $queryResult[0];
$textboxValue2 = $queryResult[1];
$textboxValue3 = $queryResult[2];
$textboxValue4 = $queryResult[3];
$textboxValue5 = $queryResult[4];
$textboxValue6 = $queryResult[5];
echo
json_encode(array('first'=>$textboxValue,'second'=>$textboxValue2,
'third'=>$textboxValue3,'fourth'=>$textboxValue4,'fifth'=>$textboxValue5,
'sixth'=>$textboxValue6));
?>
答案 0 :(得分:0)
在发送之前使用UTF-8对它们进行编码。
utf8_encode($variable);
或尝试array_map();
对数组进行编码;
$textboxValue = $queryResult[0];
$textboxValue2 = $queryResult[1];
$textboxValue3 = $queryResult[2];
$textboxValue4 = $queryResult[3];
$textboxValue5 = $queryResult[4];
$textboxValue6 = $queryResult[5];
$arrayToEncode = array('first'=>$textboxValue,'second'=>$textboxValue2,
'third'=>$textboxValue3,'fourth'=>$textboxValue4,'fifth'=>$textboxValue5,
'sixth'=>$textboxValue6);
$encodedArray = array_map('utf8_encode', $arrayToEncode);
echo json_encode($encodedArray);
您可能还需要将xmlhttp.request
设置为utf-8
xmlhttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
xmlhttp.open("GET","loadTextBox.php?id=4",true);
xmlhttp.send();
您可能需要尝试一种或另一种,甚至两种。您还想确认您的数据库是否能够存储特殊字符,如果数据库没有存储特殊字符,那么您的应用程序将无法让它们对它们进行编码。
答案 1 :(得分:0)
添加行$ mysql-&gt;查询(“SET CHARACTER SET'utf8'”);在连接到DB之后和SQL查询修复之前的loadTextBox.php里面。