2012-02-20 2 views
1

ビューからコントローラへ座標値を渡そうとしていますadd google apiからジオロケーションを取得しましたが、私はいくつかのtrouble.wellを持っています。 _add。スクリプトはjavascriptコンソールが座標をうまく印刷するために機能します。投稿のメソッドを使用してビューからコントローラへ座標を渡します。

<script type="text/javascript"> 

     $(document).ready(function(){ 
      get_location(); 
     }); 

     function get_location() 
     { 
      if(navigator.geolocation) 
      { 
       navigator.geolocation.getCurrentPosition(function(position){ 

         var latitude = position.coords.latitude; 
         var longitude = position.coords.longitude; 

         $.post('http://firstaid:8888/add', { latitude:latitude, longitude:longitude }); 

       }); 
      } 
     } 

    </script> 

今私は、私はPHPのCodeIgniterのコントローラ内の変数として使用することができ、このようにコントローラにこのビューから値を渡します。これを行うには$this->input->postを使用します。

function index() 
{ 
    $data['title'] = 'Add'; 

    $latitude = $this->input->post('latitude'); 

    $this->load->view('templates/_header', $data); 
    $this->load->view('_add'); 

} 

しかし、私は$latitudeをプリントアウトする場合、変数は間違いですblank.where可能性がありますか?私はビューをロードする前に投稿を呼び出すためかもしれません?

コントローラにデータを渡す別の方法がありますか?

答えて

0

あなたはこの行を変更する必要があります:私はjQueryの方法があると信じているとして猫を肌にする複数の方法は、もちろん、あります

$.post('http://firstaid:8888/add', 'latitude='+latitude+'&longitude='+longitude); 

:これまで

$.post('http://firstaid:8888/add', { latitude:latitude, longitude:longitude }); 

をJSONを適切なPOST変数の文字列形式にシリアル化できますが、私がここにいるのは確かにうまくいくでしょう。

+0

...私がしますprint_r($の緯度)をしてみてください。死ぬ();結果はありません... –

+0

PHPの '$ _POST'配列を直接調べてみましたか? –

+0

print_r($ _ POST( 'latitude'))を試しました。私はこのエラーが表示されます:致命的なエラー:関数名は、いくつかのアイデアを文字列にする必要がありますか? –

0

ビューに$ latitudeを渡していないため、アクセスできません。

新しいページを読み込んでいる場合、$ latitudeはビューに渡される$ data配列にある必要があります。

しかし、Ajaxを使用しているため、新しいビューをロードすることはできません。

$latitude = $this->input->post('latitude'); 
echo json_encode($latitude); 

次に、あなたのJavascriptで応答を処理します。

または、コントローラーで直接print_rを使用して変数が存在することを確認してください。

print_r($this->input->post('latitude')); 

あなたのJavaScriptでこれを試してみてください:クロームやFirebugのでAjaxリクエストを作成するとき、あなたはそれがあなたのコントローラーを見つけていることを確認することができるように

$.ajax({ 
    type: "POST", 
    url: "/add", 
    data: "latitude=" + latitude, 
    dataType: "json", 
    success: function(msg){ 
     alert('Completed'); 
    } //End success condition 
}); //End ajax 

、「ネットワーク」パネルが開いていることを確認してください。

+0

私は偽を受けます...なぜですか? –

+0

最初にこれを試してください:print_r($ this-> input-> post( 'latitude')); – cszy

+0

常に空白の値...わからない... –

0

コントローラファイル:

$this->load->library('googlemaps'); 

$config['center'] = '37.4419, -122.1419'; 
$config['zoom'] = 'auto'; 
$this->googlemaps->initialize($config); 

$marker = array(); 
$marker['position'] = '37.429, -122.1419'; 
$marker['draggable'] = true; 
$marker['ondragend'] = 'updateDatabase(event.latLng.lat(), event.latLng.lng());'; 
$this->googlemaps->add_marker($marker); 
$data['map'] = $this->googlemaps->create_map(); 

$this->load->view('view_file', $data); 

ビューファイル:

によって参照
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function updateDatabase(newLat, newLng) 
     { 
      // make an ajax request to a PHP file 
      // on our site that will update the database 
      // pass in our lat/lng as parameters 
      $.post(
       "/my_controller/update_coords", 
       { 'newLat': newLat, 'newLng': newLng, 'var1': 'value1' } 
      ) 
      .done(function(data) { 
       alert("Database updated"); 
      }); 
     } 
    </script> 
    <?php echo $map['js']; ?> 
</head> 
<body><?php echo $map['html']; ?></body> 
</html> 

:残念ながら結果http://biostall.com/demos/google-maps-v3-api-codeigniter-library/updatedatabase

関連する問題