0

XMLファイルから国のソースと目的地を取得したいのですが、localhostでは完全に機能しますが、サーバーでは機能しません。サーバーでは、カーソルをマップ上ですばやく移動すると、別の目的地の国が表示されます。

イベントでjquerymap.php price_by_countries.php ファイルを呼び出していますmouseover。また、このファイルmouseclickで 2 つの変数を渡してprice_by_countries.phpいます。このファイルでは、XML ドキュメントをロードしています。毎回 XMLfile をロードすると、この問題が発生する可能性があると思います。この問題をできるだけ早く整理したい..ありがとう


jquerymap.php ファイル コード

 jQuery.ajax({  type: "POST",
                url: "price_by_countries.php", 
                data: "s="+source+"&d="+destination,
                dataType: 'HTML',
                success: function (msg) {
                             jQuery("#rightinput").html(msg);
                         }
                }); 

price_by_countries ファイル コード

$xml = simplexml_load_file("rd.xml") or die("Error: Cannot create object");

function processXML($node){
   foreach($node->children() as $books  ){  
      if($books['source'] == trim(ucfirst($_REQUEST['s'])) && 
         $books['destination'] ==  trim(ucfirst($_REQUEST['d']))) 
      {
         echo "<pre>";
         //echo  $books ; 
         echo 'Source Country from XML file = '.$books['source'] . '  ------  Source Country from Textbox = '. trim(ucfirst($_REQUEST['s'])) ; 
         echo '<hr>';
         echo 'Destination Country from XML file =  '.$books['destination'] . '  ------  Destination Country from Textbox = '. trim(ucfirst($_REQUEST['d'])) ; 
         exit();
      } 
   }
}

processXML($xml);

ウェブサイトの URL : http://realwebit.com/jquerymap/jquerymap.php

4

1 に答える 1

0

問題は、マウスオーバーのデータ要求に関係しているようです。カーソルの移動が速すぎると、マウスオーバーによってサーバーへのリクエストが同時に多く発生します。遅延がないため、ローカルホストでは機能しますが、そうではありません。Firefox用のfirebugをインストールし、サーバーに対して行われたリクエストを確認する必要があります。

キャッシュが必要になるたびにxmlをロードしたくない場合は、ソースと宛先をキーとして使用して、クライアント側のprice_by_countries.phpの応答を配列に保存します。

誰かが国をクリックしたりホバーしたりした場合は、すぐにjqueryajax関数を呼び出さないでください。すでにデータを要求している場合は、最初に配列を確認して返します。そうでない場合は、ajaxリクエストを実行します。成功した場合は、データを配列に格納します。

ルシアン

于 2013-02-10T12:15:29.293 に答える