1

あなたのアドバイスが必要です。私はajaxとjqueryが初めてです。postgresql 9.1 /postGIS 2.0 /openlayers/geoserver と apache を使用しています。

javascript を使用して、マップ (openlayers) をクリックするとフィーチャの ID を取得できました。

ajax を使用して、この値を PHP 値に渡してクエリを実行しようとしています。Openlayers、jquery、javascript、および ajax は正常に動作しますが、php は値を取得しません。これが私のコードスニペットです。

//this is inside openlayers init function
function selected_feature(event){
//getting the id
var sf = event.feature.fid;
var sfs = sf.split(".");
var sff = sfs[1]
//ajax
$(document).ready(function()
{
 $.post("map.php", { jas: 'sff'});
});

//the php code snippet, after openlayers
$_SESSION['blah'] = $_POST['jas']; 
$blah= $_SESSION['blah'];
echo $blah;
 $queryd='
  SELECT
   pins.p_name 
  FROM
    pins
    WHERE
    pins.p_id='.$blah;
 //fetching to fill array
 $resultd=pg_query($conn, $queryd);
 $nord=pg_num_rows($resultd);
 $d=0;
  while($arrayd=pg_fetch_array($resultd)){
      $name[$d]=$arrayd['p_name'];
    $d++;
        echo $arrayd['p_name'];
                echo $arrayd[$d];

    }

問題は、php のエコーが機能せず、クエリがまったく機能しないことです。この質問は重複しているように聞こえますが、すべてのコードが同じファイル (map.php という名前) にあるため、異なると思います。さらに、背景には Web マッピングがいくつかあります。Web マッピング プログラムの 1 つが問題を引き起こしているかどうかさえわかりません。

お知らせ下さい

ありがとうございました。

EDIT ajax部分を編集しました。これに交換しました

jQuery.post("map.php", { jas : "sff" }, function(data) {
  //  alert(data);
  });

...まだ運がない

編集#2

このチュートリアルに従って、コードを編集しました。だから今私は私のmap.phpにこのjqueryを持っています

jQuery.post("testone.php", { jas : sff }, function(data) {
  alert(data);
  });

そして、testone.php でこの php コード

<?php
  $jas = $_POST['jas'];
     print $jas;
?>

map.php は実際にデータを警告します。でも、もう一つ。データを PHP 値として map.php に戻す方法を教えてください。クエリを有効にすることもできますか? そこにあるほとんどのチュートリアルは、データを警告するか、<div>. phpを使いたいです。何かのようなもの

   jQuery.post("testone.php", { jas : sff }, function(data) {
    //put returned data in a php var
          });
4

1 に答える 1

0

PHP を別のファイルに移動するecho json_encode($name);と、返されたデータを jQuery 投稿のコールバック ハンドラー内で処理する必要があります。

$.post('new.php',{jas:'sff'},function(data){ //do something cool with data[0] through the last index of the array });

于 2013-02-07T00:46:43.650 に答える