1

私は自分の問題に対する答えを求めてstackoverflowを探していましたが、なぜこれが起こっているのかわかりません。

JSONオブジェクトを返すWebサーバーを作成しました。

http://213.125.101.19/api.php?function=test

その後、Ajaxを使用してJSONを呼び出すために次のJavaScriptを使用してHTMLファイルを作成しました

<script language="javascript" type="text/javascript">
    <!-- 
    //Browser Support Code
    function ajaxCall(){
        var ajaxRequest;  // The variable that makes Ajax possible!

        try{
            // Opera 8.0+, Firefox, Safari
            ajaxRequest = new XMLHttpRequest();
        } catch (e){
            // Internet Explorer Browsers
            try{
                ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e){
                    // Something went wrong
                    alert("Your browser broke!");
                    return false;
                }
            }
        }

        // Create a function that will receive data sent from the server
        ajaxRequest.onreadystatechange = function(){
            if(ajaxRequest.readyState == 4){
                var response = ajaxRequest.responseText;
                obj = JSON.parse(response);
                console.log(obj);

                if(response.indexOf("Fatal error")>=0){
                    alert('Error, Try again.');
                }else{
                    document.getElementById("response").value = response;               
                }                 

            }   
        }


            ajaxRequest.open("GET", "http://213.125.101.19/api.php?function=test", true);
            ajaxRequest.send(null); 
    }
    </script>

このコードを実行すると、Firebugが返されます

"SyntaxError:JSON.parse:予期しないデータの終わりobj = JSON.parse(response);"

バリデーターを介してJSONを実行すると、すべてが正常に表示されます。

これを修正する方法はありますか?

よろしく、Luuk

4

2 に答える 2

0

この問題の問題は、HTML 要求が別の PC から Web サーバーに送信されていたことです。

@Olaf Dietsche は、ajaxrequest のステータスを確認することをお勧めします。これは、正常な応答ではない 0 を返しました。

HTMLリクエストファイルをWebサーバーにコピーした後、問題は解決しました。

これを手伝ってくれてありがとう。

于 2013-02-01T14:52:09.723 に答える
0

JSON は十分に単純に見えます。呼び出しまたは戻り値に問題があると思います。

チェックstatusresponseType兼ねて

ajaxRequest.onreadystatechange = function(){
    if(ajaxRequest.readyState == 4){
        console.log('status=' + ajaxRequest.status +
                    ', statusText=' + ajaxRequest.statusText +
                    ', responseType=' + ajaxRequest.responseType +
                    ', responseText=' + ajaxRequest.responseText);
...
}
于 2013-02-01T14:44:16.257 に答える