Javascript +在页面加载时加载AJAX函数+将Javascript变量传递给PHP

时间:2011-04-16 12:05:37

标签: php javascript jquery ajax

我再次遇到一个javascript问题(我是一个真正的noob意见)。这次我想在页面加载时加载一个AJAX函数,以便将一些javascript变量保存到php会话中。我发现这是将javascript vars传递给php的最佳方式。如果有更好的方式(除了cookies),请不要犹豫,让我知道:)。

现在我想:

- 在页面加载时将javascript变量传递给外部php页面 php中的-save变量 - 使用没有pagereload的php变量


到目前为止,这是我的剧本:

$(document).ready(function () {
    function save_visitor_details() {
        $(function() {
            var visitor_country = geoip_country_name();
            var visitor_region = geoip_region_name();
            var visitor_lat = geoip_latitude();
            var visitor_lon = geoip_longitude();
            var visitor_city = geoip_city();
            var visitor_zip = geoip_postal_code();
            var dataString = 'visitor_country='+ visitor_country +'&visitor_region='+ visitor_region +'&visitor_lat='+ visitor_lat +'&visitor_lon='+ visitor_lon +'&visitor_city='+ visitor_city +'&visitor_zip='+ visitor_zip;
            $.ajax({
                type: "POST",
                url: "inc/visitor_details.php",
                data: dataString,
                success: function(res) {
                       alert ("saved");
                       //$('#result').html(res);<-- should contain variables from inc/visitor_details.php
                    }); 
                }  
            });
            return false;
        }
});   


提前谢谢!

编辑:我改变了一点,并通过将javascript变量添加到隐藏的表单中,使用上面的ajax脚本提交表单并将变量保存到后端php文件的php会话数组中来使其工作。

感谢你的任何时间!

2 个答案:

答案 0 :(得分:0)

我真的不明白这里的问题是什么。但这里有一些建议。

  • 而不是自己序列化数据,你应该让jQuery为你做这件事:

    $.post('inc/visitor_details.php', {country: geoip_country_name() /* stuff */}, function(data) {
      alert('ok!'); alert(data);
    });
    
  • 请注意,通过使用Javascript将数据传递到您的服务器,用户可以发送他们想要的任何数据,包括虚假数据。所以要小心处理。

然后整个过程可能如下所示:

/* javascript */
$(document).ready(function() {
    function save_visitor_details() {
        $.post('inc/visitor_details.php', {
            country: geoip_country_name(),
            region: geoip_region_name(),
            lat: geoip_latitude(),
            lon: geoip_longitude(),
            city: geoip_city(),
            zip: geoip_postal_code()
        }, function(data) {
            /* do whatever you want here */
            alert(data);
        }, 'json');
    }

    save_visitor_details();
});

/* PHP */
<?php
$keys = array('country', 'region', 'lat', 'lon', 'city', 'zip');
$output = array();

foreach($keys as $key) {
    do_some_stuff($_POST[$key]);
    $output[$key] = $_POST[$key];
}

header('Content-type: text/plain; charset=utf-8');
echo json_encode($output);
?>

答案 1 :(得分:0)

<强> JavaScript的:

var http = createRequestObject() ;

function createRequestObject(){
    var obj;
    var browser = navigator.appName;

    if(browser == "Microsoft Internet Explorer"){
        obj = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        obj = new XMLHttpRequest();
    }
    return obj;
}

function sendReq(str){  
    http.open('get', str);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

sendReq("someurl?var=yourvar");

<强>腓:

$var = $_GET['var']; // use some security here.