简体   繁体   English

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

[英]Javascript + Load AJAX function on page load + Pass Javascript vars to PHP

I have again a little problem with a javascript (i am a real noob regardin that). 我对javascript还是有一点问题(我是一个真正的菜鸟)。 This time I would like to load an AJAX function on page load in order to save some javascript variables to php sessions. 这次我想在页面加载时加载一个AJAX函数,以便将一些JavaScript变量保存到php会话中。 I figured out thats the best way to pass javascript vars to php. 我想这就是将javascript vars传递给php的最佳方法。 If there is a better way (besides cookies), dont hesitate to let me know :) 如果有更好的方法(除了cookie),请随时让我知道:)

For now I would like to: 现在,我想:

-pass javascript variables to an external php page on page load -在页面加载时将javascript变量传递到外部php页面
-save variables in php -在php中保存变量
-use the php variables without pagereload -使用php变量而不使用pagereload


Here is my script so far: 到目前为止,这是我的脚本:

$(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;
        }
});   


Thanks in advance! 提前致谢!

Edit: I changed it a little and got it to work by adding the javascript variables into a hidden form, submit the form with the ajax script above and save variables into php session array at the backend php file. 编辑:我做了一些更改,并通过将javascript变量添加到隐藏表单中,通过上面的ajax脚本提交表单并将变量保存到后端php文件的php会话数组中来使其工作。

Thanks any1 for your time!!! 谢谢你的时间!!!

I don't really understand what is the question here. 我真的不明白这里的问题是什么。 But here are a few advices. 但是这里有一些建议。

  • rather than serializing the data yourself, you should rather let jQuery do that for you: 与其亲自序列化数据,不如让jQuery为您完成:

     $.post('inc/visitor_details.php', {country: geoip_country_name() /* stuff */}, function(data) { alert('ok!'); alert(data); }); 
  • be aware that, by passing data to your server using Javascript, users can send whatever data they want, including fake data. 请注意,通过使用Javascript将数据传递到服务器,用户可以发送所需的任何数据,包括伪造的数据。 So handle it with care. 因此,请谨慎处理。

Then entire process may looks like this: 然后整个过程可能如下所示:

/* 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);
?>

JavaScript: 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");

Php: Php:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM