jQuery ajax / post response encoding

时间:2012-04-22 14:56:38

标签: jquery encoding json

我遇到了通过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编码。

我真的不知道为什么以及如何将其转换回可读字符串。 您可能知道如何发生这种情况?

我一开始没有找到合适的解决方案,只是搜索和替换方法。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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 !!

答案 2 :(得分:0)

您可以针对test.php

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