Javascript + загрузка функции AJAX при загрузке страницы + передача Javascript-переменных в PHP - PullRequest
0 голосов
/ 16 апреля 2011

У меня опять небольшая проблема с javascript (в этом я настоящий нуб). На этот раз я хотел бы загрузить функцию AJAX при загрузке страницы, чтобы сохранить некоторые переменные javascript в сеансах php. Я понял, что это лучший способ передать переменные javascript в php. Если есть лучший способ (кроме печенья), не стесняйтесь, дайте мне знать:)

На данный момент я бы хотел:

- передать переменные javascript на внешнюю php-страницу при загрузке страницы
переменные в php
- использовать переменные 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.

Спасибо any1 за ваше время !!!

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011

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.
0 голосов
/ 16 апреля 2011

Я не очень понимаю, в чем здесь вопрос.Но вот несколько советов.

  • вместо того, чтобы самим сериализовать данные, вы должны позволить 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);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...