0

データベースから特殊文字 (キャロン) を使用してデータを取得し、json_encode を使用して xmlhttp.responseText を介して送信し、テキスト ボックスに入力しようとしています。特殊文字 (キャロン) を含むデータに関連付けられた特定のテキスト ボックスには、何も表示されません。他のテキストボックスには正しいデータが表示されています。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));
?>
4

2 に答える 2

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.requesttoutf-8も設定する必要があるかもしれません

xmlhttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
xmlhttp.open("GET","loadTextBox.php?id=4",true);
xmlhttp.send();

どちらか、あるいは両方を試す必要があるかもしれません。また、DB が特殊文字を格納できることを確認する必要があります。DB が特殊文字を格納していない場合、アプリケーションが特殊文字をエンコードする方法はありません。

于 2012-09-11T16:22:44.020 に答える
0

$mysql->query("SET CHARACTER SET 'utf8'"); の行に追加します。DBに接続した後、SQLクエリがそれを修正する前のloadTextBox.php内。

于 2012-09-16T04:59:29.823 に答える