2014-03-01 75 views
-1

我想用文本解析JSON,使用JSON.parseJSON.parse不能正确解析JSON

我的问题是,我的JSON编码为UTF8,但JSON.parse不会用UTF8解析它。

这是我的build_workout_functions.js代码:

function getExercies(){ 
    var xmlhttp; 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange=function(){ 

    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
    console.log(xmlhttp.responseText); 
    var obj = JSON.parse(xmlhttp.responseText); 
    console.log(obj); 
     } 
    } 

xmlhttp.open("POST","get_exercise_list.php",true); 

var e = document.getElementsByName("muscles"); 
var strUser = e[0].options[e[0].selectedIndex].text; 

console.log(strUser); 

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); 
xmlhttp.send("muscle=" + strUser); 
} 

的PHP代码:

<?php 
header("Content-type: application/json; charset=utf-8"); 
if(isset($_POST['muscle'])){ 
    echo $_POST['muscle']; 
    $response["test"] = $_POST['muscle']; 
    echo json_encode($response); 
} 
?> 

的HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <link rel="stylesheet" type="text/css" href="styles.css" /> 
    <script src="build_workout_functions.js" charset="UTF-8"></script> 
</head> 
<body id="login-bg"> 
    <div class="workout_table"> 
     <select name="muscles" onchange="getExercies()"> 
      <option value="legs">טסט</option> 
      <option value="back">טסט2</option> 
     </select> 
     <select name="exericse"><select> 
    </div> 
</body> 
</html> 

在我的开发者控制台(我使用的是Chrome浏览器)我看到这个日志:

יד קדימית build_workout_functions.js:33 
XHR finished loading: "****************". 
build_workout_functions.js:38 
יד קדימית{"test":"\u05d9\u05d3 \u05e7\u05d3\u05d9\u05de\u05d9\u05ea"} 

在我的日志中,我看到当我只是回显我的POST时,我可以看到它编码正确。

但我的JSON.parse没有这样做。我怎样才能解决这个问题?

+2

到底是什么问题,什么是分析“不正确”?顺便说一句,你的日志不符合你的代码。 – Bergi

+0

什么是您的PHP版本? – Nico

+1

你有什么错误吗?当你说什么“不起作用”时,它可以极大地帮助*解释你的意思。 – Pointy

回答

0

我用这个来解决这个问题:

json_encode($response, JSON_UNESCAPED_UNICODE)