2012-04-01 15 views
0

ユーザーの場所を特定できる場合は、以下のJavaScript投稿データがあります。

if (document.cookie.indexOf("latLng") == -1) { 
    console.log("fired geolocation lookup"); 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(success, error, {enableHighAccuracy:true,timeout:6000,maximumAge:2500}); 
    } else { 
     //html5 geolocation isn't supported in this browser 
     error('not supported'); 
     //render set location manually 
    } 
} else if (document.cookie.indexOf("latLng") == 0) { 
    $(function() { 
     organiseLocation(); 
    }); 

} 

function success(position) { 
    //cool we've got the location 
    //var locationData = {"location": position.coords.latitude+", "+position.coords.longitude, "radius": 50, "type": "auto"}; 
    console.log("position ", position); 
    $.ajax({ 
     type: "POST", 
     url: "../set_location", 
     data: position, 
     dataType: "json", 
     success: function(){ 
      console.log("success!"); 
     } 
    }); 
} 

function error(msg) { 
    //we couldn't determine your location 
    var s = document.querySelector('#status'); 
    s.innerHTML = typeof msg == 'string' ? msg : "failed"; 
    s.className = 'fail'; 
    //this needs cleaning up! 
    console.log(arguments); 
} 

それはChromeで正常に動作しますが、しかし、Firefoxの& Safariで私は次のエラーを取得する - 任意のアイデア?

Illegal operation on WrappedNative prototype object 
[Break On This Error] 

value = jQuery.isFunction(value) ? value() : value; 

答えて

1

あなたがオブジェクトをシリアル化するためにJSON.stringify()を使用する必要があるように見えます:

$.ajax({ 
    type: "POST", 
    url: "../set_location", 
    data: JSON.stringify(locationData), 
    dataType: "json", 
    success: function(){ 
     console.log("success!"); 
    } 
}); 

+0

パラメータは、{ "場所" として通ってくる(位置データを文字列化するdata:を編集)=> {}}私はそれをログアウトしたので、位置オブジェクトは間違いなくそこに物事を持っています。何か案は? – Elliot

+0

コードサンプルを編集して 'locationData'をシリアル化しました。これはあなたが興味を持ったデータのようです。基本的には、シリアライズ可能なものをすべて文字列化してサーバーに送ることができるはずです。 – slashingweapon

関連する問題