2016-10-01 23 views
1

名前と位置プロパティを持つオブジェクトを取得しようとしています。その場所にマーカーを作成するには、locationプロパティの座標が必要です。このコードを実行するとUncaught SyntaxErrorが発生します。位置1のJSONで予期しないトークンo。PUTメソッドでJSON.stringify(data)を使用しました。JSONオブジェクトから座標を使用して変数を取得する方法

function getLocation(){ 
 
\t var name = $("#username").val(); 
 
\t console.log('getLocation()'); 
 
\t if(name != ''){ 
 
\t \t $.ajax({ 
 
\t \t \t type: \t 'GET', 
 
\t \t \t url: \t '../../' + name, 
 
\t \t  async: true, 
 
\t \t  success:function(data){ 
 
\t \t  \t var oData = JSON.parse(data); 
 
\t \t  \t var marker = new L.marker(oData.location); 
 
\t \t \t \t marker.addTo(map); 
 
\t \t  \t $("#username").val(''); 
 
\t \t  }, 
 
\t \t \t error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); } 
 
\t \t }); 
 
\t } 
 
}

+3

を得る場合を解析され、既にあるのだろう。サンプルJSON出力を追加する –

+1

'予期しないトークン 'o'は、通常、JSONテキストではなくオブジェクトを解析しようとしていることを意味します。つまり、' data'はすでにJSONからオブジェクトに解析されています。 'data.'がすでにオブジェクトであるかどうかを調べるには' console.log(data) ' –

+0

とします。jQuery.ajaxは' dataType'プロパティを指定しないとデータ型を推測します。値 'json'を指定すると、jQueryがすでにJSON文字列を解析し、文字列ではなくオブジェクトを渡していることがわかります。 – trincot

答えて

1

は、あなたの結果はJSONが

function getLocation(){ 
    var name = $("#username").val(); 
    console.log('getLocation()'); 
    if(name != ''){ 
     $.ajax({ 
     type: 'GET', 
     url: '../../' + name, 
      async: true, 
      success:function(data){ 
      var marker = new L.marker(data.location); 
      marker.addTo(map); 
      $("#username").val(''); 
      }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); } 
     }); 
    } 
    } 

か、あなたのデータがどのように見えるか、アレイ

function getLocation(){ 
    var name = $("#username").val(); 
    console.log('getLocation()'); 
    if(name != ''){ 
     $.ajax({ 
     type: 'GET', 
     url: '../../' + name, 
      async: true, 
      success:function(data){ 
      var marker = new L.marker(data[0].location); 
      marker.addTo(map); 
      $("#username").val(''); 
      }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); } 
     }); 
    } 
1

$.ajaxデフォルトdataType設定は、応答のタイプを推測し、すでにそれを解析すると:

dataType (default: Intelligent Guess (xml, json, script, or html))

The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string).

パトリック・エヴァンスが述べたように、あなたのdataがすでにオブジェクトに変換され、 JSON.parseを使用する必要はありません。

+0

より良い提案は、特定のデータ型を設定することです – charlietfl

関連する問題