将JavaScript变量发送给PHP

时间:2011-12-01 13:57:00

标签: php javascript ajax json

我在这里尝试做的是将一个JavaScript变量发送到PHP函数。我正在开发的是一个jQuery移动应用程序,您可以在达到特定经度/纬度时办理登机手续。但我在将经度/纬度发送到PHP函数时遇到问题。我发送它到PHP函数,因为我将与我存储在我的数据库中的经度/纬度进行比较。

这是我的代码。

        function testResults() {

            if(navigator.geolocation) {
                //Get the current position
                navigator.geolocation.getCurrentPosition(function(position) {
                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
                    document.write("lat", latitude);
                    document.write('<br /><br />');
                    document.write("long", longitude);
                });
            } else {
                alert("Sorry... your browser does not support the HTML5 GeoLocation API");
            }

         //////////// Here I tried with jQuery/Ajax. I know that it's wrong.
        ////////////  Im putting it here so that it maybe clarifies what Im 
       ////////////   trying to do.

            $.post("checkLocation.php", {
                lat : latitude,
                longi : longitude
            }, function(data) {
                alert("Data Loaded: " + data);
            });

      ////////////////////////////////////////////////////////////////////

        }

        testResults();

如何解决此问题?我尝试过使用JSON,但我没有让它工作。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

您在获得地理位置响应之前发送请求

您需要在回调中执行此操作。

答案 1 :(得分:0)

尝试使用AJAX

http://api.jquery.com/jQuery.ajax/

您的处理程序应如下所示:

$.ajax({
  type: "POST",
  url: "checklocation.php",
  data: "lat="+latitude+"&longi="+longitude
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});

答案 2 :(得分:0)

navigator.geolocation.getCurrentPosition(function(position) {
                var latitude = position.coords.latitude;
                var longitude = position.coords.longitude;
                document.write("lat", latitude);
                document.write('<br /><br />');
                document.write("long", longitude);
            });

这里有本地 vars纬度和经度。如果要在此函数之外使用它们,可以使用全局变量:

var latitude;
var longitude;
//...
navigator.geolocation.getCurrentPosition(function(position) {
                latitude = position.coords.latitude;
                vlongitude = position.coords.longitude;
                document.write("lat", latitude);
                document.write('<br /><br />');
                document.write("long", longitude);
            });

//usage(transfer) of vars

答案 3 :(得分:0)

尝试在回调中使用AJAX-Request(概念验证,不确定它是否有效):

function testResults()
{
    if (navigator.geolocation)
    {
        //Get the current position
        navigator.geolocation.getCurrentPosition(function (position)
        {
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;

            // do callback                
            $.ajax(
            {
                type: "POST",
                url: "checklocation.php",
                data: "lat=" + latitude + "&lon=" + longitude
            }).done(function (msg)
            {
                alert("Data Saved: " + msg);
            });

        });
    }
    else
    {
        alert("Sorry... your browser does not support the HTML5 GeoLocation API");
    }
}

testResults();

干杯。弗兰克