2017-02-08 19 views
-1

結果を解析するjqueryポストを設定しました。私は守っているJSON.parse: unexpected character at line 1 column 2 of the JSON data app.js:31:24SyntaxError:JSON.parse:JSONデータの第1行第2列の予期しない文字app.js:31:24

これがなぜ機能しないのか分かりません。私は現在/api/wordのエンドポイントが結果を返しています(ポストに存在する場合)。返されない場合は、同じエンドポイントにポーリングされたGETで結果が利用可能になるまでfalseを返します。

は、ここに私のapp.js

(function() { 

    'use strict'; 

    var configOptions = { 
     endpoint : '/api/word' 
    }; 

    jQuery(document).ready(run); 

    function run() { 
     jQuery('form').on('submit', submitForm); 
    } 

    function submitForm(e) { 
     e.preventDefault(); 
     var data = jQuery(e.currentTarget).serialize(); 

     jQuery('button').prop('disabled', true); 

     jQuery.ajax({ 
      url: configOptions.endpoint, 
      method: 'POST', 
      data: data, 
      success: readQueueResults, 
      error: showError 
     }); 

     function readQueueResults(response) { 
      console.log(response); 
      var data = jQuery.parseJSON(response); 

      var interval = setInterval(function() { 
       jQuery.ajax({ 
        url: configOptions.endpoint, 
        method: 'GET', 
        data: 'id=' + data.id, 
        success: showResults 
       }); 
      }, 500); 

      function showResults(response) { 
       if (response) { 
        clearInterval(interval); 

        jQuery('button').prop('disabled', false); 

        var data = jQuery.parseJSON(response); 
        renderMessage('alert-success', 'Your word is <b>' + data.percent + '%</b> pronounceable'); 
       } 
      } 
     } 

     function showError(error) { 
      console.warn(error.status, error.statusText); 

      jQuery('button').prop('disabled', false); 

      renderMessage('alert-danger', '<b>' + error.status + '</b> - ' + error.statusText); 
     } 
    } 

    function renderMessage(classes, message) { 
     jQuery('.alert').remove(); 

     var div = jQuery('<div>', {class: 'alert clear text-center row ' + classes}); 
     div.append(message); 
     div.appendTo('.col-md-6'); 
    } 

}()); 

コンソールログはどちらか

18828f7e-5554-43ee-8d3c-b00abe1409ca

または

Object {pronounceability: "0.0"}

+0

を修正するためにjQuery.parseJSON(response)を取らなければならなかった、すでに解析されたオブジェクトを送り返すFlaskを使用していますので、コンソールログから取得しているjson応答を投稿してください – KAD

+0

@KADは応答を追加しました – nadermx

答えて

0

私はそれは私がそれ

0

ほとんどのJSONが不正な形式であるです。 JSON表記は、JavaScriptオブジェクト構文のサブセットに過ぎないことに注意してください。たとえば、キーを二重引用符で囲むのを忘れた場合、パーサーはそのようなオブジェクトを拒否します。解析しようとしているJSONを投稿してください。 (にconsole.logが掲載された後)http://jsonlint.com/

EDIT:

はまた、あなたのJSONはこの1つのように多くのオンラインJSON検証ツールの一つで有効であるかどうかを確認することができ、問題がサーバー側にあるように見え、 2つのコンソール出力のどちらも有効なJSON文字列ではありません。

+0

私はちょうどjson応答を投稿しました – nadermx

0

返されるタイプはどちらもJSON形式ではないと思われますが、その結果は適切に構文解析されたjQuery.parseJSONのJSON形式の文字列になります。次のようにチェックを作る

は有益である:

function IsJsonString(str) { 
    try { 
     JSON.parse(str); 
    } catch (e) { 
     return false; 
    } 
    return true; 
} 

https://stackoverflow.com/a/3710226/2611451

関連する問題