4

ajaxを介してロードされたjsonエンコード情報に問題があります。

PHPコード(test.php):

<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr);
?>

htmlファイル内のJavaScriptコード:

$(document).ready(function() {
  $.post("test.php", function(data){
    var response = $.parseJSON(data);
    console.log(response.first);
    console.log(response.second);
  }
});

そして、コンソールでの結果は次のようになります。

Productmanager&#x20;m&#x20;&#x2f;&#x20;f

test

どちらのファイルもUTF-8エンコードです。

なぜ、そしてどのようにそれを読み取り可能な文字列に戻すのか、私は本当に知りません。あなたはこれがどのように起こり得るかについての考えを持っているかもしれませんか?

最初は適切な解決策が見つかりませんでした。検索と置換のアプローチだけです。

4

3 に答える 3

3

正しい PHP ヘッダーを追加し、文字列をデコードします。

<?php
  header("Content-type: application/json");
  $val1 = "Productmanager m / f";
  $val2 = "test";
  $arr = array("first" => $val1, "second" => $val2);
  echo json_encode($arr);
?>

<script>

    $(document).ready(function() {
      $.post("test.php", function(data){
        var response = $.parseJSON(data);
        console.log(htmlDecode(response.first));
        console.log(response.second);
      }
    });

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}

</script>
于 2012-04-22T15:14:59.160 に答える
0

あなたはあなたのためにこれを試すことができますtest.php

<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>
于 2012-04-22T15:10:33.333 に答える
0

これを試していただけますか?

$(document).ready(function() {
    $.ajax({
        type: "POST",
        url: "test.php",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        dataType: 'json',
        success: function(data) {
            var response = $.parseJSON(data);
                console.log(response.first);
                console.log(response.second);
        }
    });
});

「contentType」を使用して、ajax リクエストの文字エンコーディングを設定できます。

PHP側では、コードは次のようにする必要があります。

<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>

重要な注意: JSON_UNESCAPED_UNICODE は php 5.4.0 で動作します!!

于 2012-04-22T15:04:30.247 に答える