我再次遇到一个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会话数组中来使其工作。
感谢你的任何时间!
答案 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.