簡體   English   中英

Javascript +頁面加載AJAX函數+將Java變量傳遞給PHP

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

我對javascript還是有一點問題(我是一個真正的菜鳥)。 這次我想在頁面加載時加載一個AJAX函數,以便將一些JavaScript變量保存到php會話中。 我想這就是將javascript vars傳遞給php的最佳方法。 如果有更好的方法(除了cookie),請隨時讓我知道:)

現在,我想:

-在頁面加載時將javascript變量傳遞到外部php頁面
-在php中保存變量
-使用php變量而不使用pagereload


到目前為止,這是我的腳本:

$(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會話數組中來使其工作。

謝謝你的時間!!!

我真的不明白這里的問題是什么。 但是這里有一些建議。

  • 與其親自序列化數據,不如讓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);
?>

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:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM