2014-04-19 94 views
1

我有這樣的代碼:AJAX JSON意外的標記「

$.ajax({ 
      dataType: 'text', 
      url: '/_/js/answers.json', 
      type: "GET", 
      success: function (data) { 
       alert(data); 
       alert(data.code); 
       var result = JSON.parse(data); 
       var hey = JSON.parse('{"code": 123}'); 
       alert(hey.code); 
       alert(result.code); 
      }, 
      error: function() { 
       alert("code not found"); 
      } 
     }); 

在第一個警報,alert(data)它讓我看到 '{ 」代碼「:123}',在第二個警報alert(data.code),它告訴我undefined,在第三條提示alert(hey.code)中,它顯示我123,這就是我想要的,但在第四條提示中,控制檯告訴我Uncaught SyntaxError: Unexpected token '
當我改變JSON.parse$.parseJSON,它完全一樣的東西。
我不知道什麼是錯的,json很好(和var中的json完全一樣)。

我通過JSON像這樣的服務器: 的javascript:

var json = {code: code}; 
     json = JSON.stringify(json); 
     json = {data: json}; 

     $.ajax({ 
      url: "/_/js/write-json.php", 
      type: "POST", 
      dataType: 'json', 
      data: json 
     }); 

PHP:

<?php 
    $myFile = "answers.json"; 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh,var_export($_POST['data'], true)); 
    fclose($fh); 
    ?> 

謝謝,bhc11。

+0

這可能是您的JSON是無效的,可以肯定的檢查[這裏](http://jsonlint.com/) – Hatsjoem

+0

我已經檢查過了,它與var hey中的json完全一樣。 – bhc11

+0

請發佈json。 – Hatsjoem

回答

1

嘗試改變數據類型爲JSON:

$.ajax({ 
    dataType: 'JSON', 
    url: '/_/js/answers.json', 
    type: "GET", 
    success: function (data) { 
     alert(data); 
     alert(data.code); 
     var result = JSON.parse(data); 
     var hey = JSON.parse('{"code": 123}'); 
     alert(hey.code); 
     alert(result.code); 
    }, 
    error: function() { 
     alert("code not found"); 
    } 
}); 
+0

如果您將dataType更改爲JSON,則jQuery會爲您解析它。所以不需要'var result = JSON.parse(data);'因爲'data'已經是一個對象。但是,從其他評論看來,返回的JSONw是無效的。該方法需要服務器有效的JSON(和有效的JSON內容類型) – Adam

+0

是的,但是當我將它更改爲json時,它給了我錯誤函數。我可能沒有以正確的方式將json傳遞給服務器。 – bhc11

+0

您必須將標題內容類型設置爲「text/json」 – dbucki

4

在你的JSON的'角色使它成爲一個JavaScript字符串,不形成數據的一部分。

它看起來像你在JSON中的那些字符,你通過HTTP請求,所以他們形成數據的一部分。

這不是有效的JSON。刪除引號。

你應該有:

{"code": 123} 

'{"code": 123}'