2012-01-29 28 views
0

我想在本地主機上測試幾個使用YUI3的ajax和JSON解析示例。代碼如下:YUI3 JSON解析和IE9

<!doctype html> 
<html> 
<head> 
    <title>YUI 3 Getting started</title> 
</head> 
<body> 
    <p id="time">(what time is it?)</p> 

    <button id="go">What time is it?</button> 

    <script src="http://yui.yahooapis.com/3.3.0/build/simpleyui/simpleyui-min.js"></script> 
    <script> 

    function printTime(id, response) { 
     try { 
      var data = Y.JSON.parse(response.responseText); 
     } 
     catch (ex) { 
      data = { time: "ERROR" }; 
     } 

     Y.one("#time").setContent(data.time); 
    } 

    Y.one("#go").on("click", function() { 
     Y.io("watch.php", { 
      on: { 
       success: printTime 
      } 
     }); 
    }); 

    </script> 

</body> 
</html> 

這是watch.php:

<?php 
header('Content-Type: application/json; charset=utf8'); 
echo(
    json_encode(
     array(
      "time" => date("g:ia l, M jS") 
     ) 
    ) 
); 

我試圖將文件上傳到虛擬主機提供商,而我仍然得到同樣的問題。奇怪的是,它在Firefox中完美運行,但拒絕在IE9和其他IE模式下工作! IE正在返回此錯誤代碼:c00ce56e

任何想法?

回答

4

原來IE9對於JSON響應非常嚴格。可以肯定的是,請確保爲每個JSON響應發送了一個包含編碼的正確標題。還要確保JSON格式正確。

這是修復:

header('Content-Type: application/json; charset=utf-8'); 

注意字符集MUST定義,並且必須是一個有效的字符集。

+0

確認 - 剛剛遇到完全相同的大腦爆炸問題。注意utf-8中的' - ' - 這就是全部的區別。 – 2012-11-07 06:55:45