[英]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.