2011-04-16 17 views
0

もう少しjavascriptに問題があります(私は本当のnoobです)。今回は、PHPのセッションにいくつかのjavascript変数を保存するために、ページロード時にAJAX関数をロードしたいと考えています。私はそれがPHPにjavascriptのvarsを渡すための最良の方法を考え出した。ページのロード
-save変数の外部のPHPページに

-pass javascriptの変数:(クッキー以外にも)より良い方法がある場合は、私がしたい今の私は:)Javascript +ページにAJAX関数をロードする+ PHPにJavaScriptを渡す

をお知らせすることを躊躇いけませんここでpagereloadなしのPHP変数


-use 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

PHP変数ですか? 'nc/visitor_details.php'で? – diEcho

+0

実際の質問は何ですか、私はこのスクリプトでエラーがないことを確認します。 – Khez

+0

こんにちは、php変数は "inc/visitor_details.php"で "生成"されています。私がindex.phpを読み込んだときに変数がphpに保存されず、警告がトリガされないので、スクリプトは私のためには機能しません。 (少なくとも今は私のために働いていません) – Andrej

答えて

0

私は本当にここでの質問が分かりません。しかしここにいくつかのアドバイスがあります。

  • ではなく、データを自分でシリアライズ、あなたはかなりjQueryのはあなたのためにそれをやらせる必要があります。

    $.post('inc/visitor_details.php', {country: geoip_country_name() /* stuff */}, function(data) { 
        alert('ok!'); alert(data); 
    }); 
    
  • 送信できるユーザー、Javascriptを使用してサーバーにデータを渡すことにより、その注意してくださいどのようなデータであれ、偽のデータを含めて。だから注意してください。

そして、全体のプロセスは、5月のようになります。

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

こんにちはZopieux、お返事ありがとうございます。私は最後に何を望んでいるのかを例を挙げて説明します:訪問者はindex.phpに来る - > javascriptは彼の情報を取得して変数に保存する - >保存された変数はvisitor_details.phpに送られる - >送信された変数はPHPとして保存される変数 - > PHP変数はindex.phpに返されます。ページの再読み込みが行われていないものはすべて訪問者から取得されます。 – Andrej

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

PHPの:

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

彼はすでにjQueryを使用していますが、私はここでXMLHTTPの処理のポイントを見ません。さらに、彼はPOSTを使いたいと思うようです。 – zopieux

+0

とにかくzozoありがとう、しかし私は少し別の解決策を思いついた。上記の私の記事を参照してください。 – Andrej

関連する問題