2014-03-01 97 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)