2013-02-01 75 views
1

我一直在找我的問題的答案stackoverflow,但我似乎無法找到爲什麼會發生這種情況。Json調用JSON.parse:意外的數據結束

我創建了一個Web服務器返回一個JSON對象:

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

之後,我創建了下面的JavaScript的HTML文件來調用使用Ajax

<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> 

當我運行JSON此代碼,我的Firebug返回

「SyntaxError:JSON.parse:意外的數據結束 obj = JSON.parse(response);」

如果我運行我的JSON通過驗證器,一切似乎都很好。

任何想法如何解決這個問題?

親切的問候, Luuk

+0

json是什麼樣的? –

+0

我的Json看起來像這樣:'{「first」:「a」,「second」:「b」,「third」:「c」} – luuk86

+0

任何人都有任何想法,爲什麼這不起作用。 json似乎對我很好。 – luuk86

回答

0

JSON看起來很簡單。我想這個調用或返回值有問題。

檢查statusresponseType以及

ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     console.log('status=' + ajaxRequest.status + 
        ', statusText=' + ajaxRequest.statusText + 
        ', responseType=' + ajaxRequest.responseType + 
        ', responseText=' + ajaxRequest.responseText); 
... 
} 
+0

感謝@Olaf Dietsche的評論。我的狀態是0,其他是空的。難道我做錯了什麼? – luuk86

+0

只有在'readyState == 4'時才檢查'status'。 –

+0

@ luuk86狀態應爲200才能成功回覆。 0未定義,AFAIK。 –

0

此問題的問題是,我的HTML請求是從另一臺電腦發送到我的網絡服務器。

@Olaf Dietsche說這是檢查ajaxrequest狀態的好主意。這給了一個0,這不是一個成功的迴應。

將html請求文件複製到網絡服務器後,問題就解決了。

感謝大家幫助我解決這個問題。