2015-04-26 3 views
0

Это объект XMLHttpRequest. Когда я положил его на cosole.log это дает следующий ответ:JSON parse issue with ajax

console.log(this.responseText); 
"[ 
    { 
    "url": "https://api.github.com/gists/c7c0df592e99c0c34b99", 
    "forks_url": "https://api.github.com/gists/c7c0df592e99c0c34b99/forks", 
    "commits_url": "https://api.github.com/gists/c7c0df592e99c0c34b99/commits", 
    "id": "c7c0df592e99c0c34b99", 
    "git_pull_url": "https://gist.github.com/c7c0df592e99c0c34b99.git", 
    "git_push_url": "https://gist.github.com/c7c0df592e99c0c34b99.git", 
    "html_url": "https://gist.github.com/c7c0df592e99c0c34b99", 
    "files": { 
     "config.json": { 
     "filename": "config.json", 
     "type": "application/json", 
     "language": "JSON", 
     "raw_url": "https://gist.githubusercontent.com/anonymous/c7c0df592e99c0c34b99/raw/70489beaa4953f89fc8848195371da6eca76164c/config.json", 
     "size": 17911 
     } 
    }, 
    "public": true, 
    "created_at": "2015-04-26T20:34:11Z", 
    "updated_at": "2015-04-26T20:34:11Z", 
    "description": "Bootstrap Customizer Config", 
    "comments": 0, 
    "user": null, 
    "comments_url": "h"[…] 

Но когда я пытаюсь использовать JSON.parse на ней он дает мне ошибку: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data.

логи = JSON.parse (this.reponseText)

им предполагается использовать этот API https://developer.github.com/v3/gists/ и его должны вернуть действительный JSON в соответствии с этой документацией

ли выше данные, которые были возмещены за счет сайт недействителен JSON? Или я должен использовать другую функцию, отличную от JSON.parse? Или что происходит? Пожалуйста помоги.

полный Pastebin здесь: http://pastebin.com/BWttNtXP

+0

Это не действительный JSON вот почему ... как она производится? Можем ли мы увидеть этот код? –

+2

Вам нужно заменить стартовые кавычки на одиночные для начала, потому что ваши внутренние кавычки двойные. –

+2

@ChavdarSlavov - Возможно, это артефакт зрителя, который JSON копировал/вставлял. – Quentin

ответ

0

Попробуйте это :)

console.log(this.responseText); 
    var txt = this.responseText.trim("\""); 
    gists = JSON.parse(txt); 

Таким образом, ваш Pastebin HTML работает нормально

3

Update: проблема решена

Корень проблемы является типографская ошибка в коде. Вы можете это заметить?

gists = JSON.parse(this.reponseText); 

Исправлено: код код

gists = JSON.parse(this.responseText); 

OP работает нормально, как только это изменение сделано.

Ну, кто-нибудь, кто закодирован на некоторое время, знает, как легко тратить много времени на что-то столь же простое, как отсутствует скобка или точка с запятой. И когда ты наконец найдешь это ... Д'о!

Оригинал сообщения:

Там не кажется, что ничего плохого с источником JSon как ниже код может тянуть и обрабатывать штраф данных. Нажмите «Выполнить фрагмент кода» для просмотра.

<!DOCTYPE HTML> 
 
<html> 
 
<head> 
 
<meta http-equiv="X-UA-Compatible" content="IE=10" /> 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
<title>JSON</title> 
 
</head> 
 
<body> 
 
<h1 style="background-color:steelblue; color:white; padding:5px;">JSON DATA TEST</h1> 
 
Raw Data: 
 
<textarea id="output" style="width: 100%; height: 40em;padding:0.5em; border:1px black solid;"></textarea> 
 

 
<script type="text/javascript"> 
 
    // synchronous request for testing only. 
 
\t var xhr = new XMLHttpRequest(); 
 
\t xhr.open('GET', 'https://api.github.com/gists/public', false); 
 
\t xhr.send(); 
 
\t document.getElementById('output').value = xhr.responseText; 
 
\t 
 
\t try { 
 
\t \t var data = JSON.parse(xhr.responseText); 
 
\t \t alert('SUCCESS:\n' + data[0].forks_url); 
 
\t } 
 
\t catch(e){ alert('ERROR:\n' + e.description); } 
 
</script> 
 
</body> 
 
</html>

+0

aah ... вот почему мой код работал ... но да ... Я не заметил опечатку: D –