2015-12-06 2 views
0

Я использую эту функцию JS для захвата геолокации посетителей и отображения ее на странице. Это отлично работает.Вставка значений из JavaScript непосредственно в базу данных MySQL

 function onGeoSuccess(location) { 
     console.log(location); 
     var strLocation = '<b>Latitude:</b> ' + location.coords.latitude + '<br />' + 
         '<b>Longitude:</b> ' + location.coords.longitude + '<br />' + 
         '<b>City:</b> ' + location.address.city + '<br />' + 
         '<b>Country:</b> ' + location.address.country + '<br />' + 
         '<b>Country Code:</b> ' + location.address.countryCode + '<br />' + 
         '<b>Region:</b> ' + location.address.region + '<br />' + 
         '<b>Accuracy:</b> ' + location.coords.accuracy + '<br />' + 
         '<br />' 
     document.getElementById('geofound').innerHTML = strLocation; 
    } 
//The callback function executed when the location could not be fetched. 
function onGeoError(error) { 
    console.log(error); 
} 

window.onload = function() { 
    //geolocator.locateByIP(onGeoSuccess, onGeoError, 2, 'map-canvas'); 
    var html5Options = { enableHighAccuracy: true, timeout: 6000, maximumAge: 0 }; 
    geolocator.locate(onGeoSuccess, onGeoError, true, html5Options, 'geo-details'); 
}; 

Теперь я хотел бы сохранить эту информацию в базе данных MySQL при каждом вызове. Что-то вроде:

var strLocation = '$addtodb = "mysql_query('INSERT INTO gpsdb (lat, lon, city, country, code, region, accuracy) values (location.coords.latitude, location.coords.longitude, ...))"' 

но я не думаю, что это правильный способ сделать это. Каким будет правильный способ ввода информации в базу данных непосредственно из JS? Мне не нужно эхо-информацию, как сейчас, в JS, я бы предпочел вытащить ее из базы данных после ее ввода. JS будет использоваться только для вставки в БД.

ответ

0

вам нужно будет использовать AJAX вызов http://api.jquery.com/jquery.ajax/ на ваш серверный язык, чтобы затем вставить информацию в базу данных

например

сообщение в базу данных

function insertIntoDatabase(location){ 
$.ajax({ 
    url: 'serversideurl', 
    type : "POST",  
    data: location,  
    success: function(response) { 
    // after success from server show the location on screen? 
    document.getElementById('geofound').innerHTML = response.location; 
    } 
}); 

} 

затем внутри сервера вы можете проанализировать объект или выполнить это клиентом до его отправки в виде данных. и запустите mysql_query

+0

О, хорошо. Таким образом, URL-адрес будет PHP, который получает данные из URL-адреса и вводит их в БД, правильно? Как мне отформатировать строки lat, lon и т. Д. В «serverideurl»? 'url: 'www.foo.com/insert.php?lat=' + location.coords.latitude + '? Lon =' + location.coords.longitude + 'etc ...',' – Fid

+0

вы можете изменить url to 'www.foo.com/ insert.php' и тип' GET' и изменить данные на что-то вроде: 'data: { longitude: location.coords.longitude, city: location.address.city , countrycode: location.address.countryCode, region: location.address.region, Точность: location.coords.accuracy } 'Тогда на стороне php вы можете использовать команды типа' $ _GET ['city'] ' – user2950720

Смежные вопросы