避免多次重新加载xml

时间:2013-02-10 07:47:36

标签: php xml

我想从XML文件中获取国家/地区源和目的地,它在localhost中完美运行但在服务器中不起作用,如果我在地图上快速移动光标,它在服务器中显示不同的目的地国家。

<{1>} jquerymap.php我在mouseovermouseclick事件上调用price_by_countries.php文件,我也在price_by_countries.php传递2个变量,在此文件中我正在加载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);

网址网址:http://realwebit.com/jquerymap/jquerymap.php

1 个答案:

答案 0 :(得分:0)

问题似乎与onmouseover上的数据请求有关。如果您将光标移动太快onmouseover会同时触发许多请求到服务器!这适用于localhost,因为没有延迟,但不是!你应该为firefox安装firebug并查看对服务器的请求。

如果您不想在每次需要缓存时加载xml: 使用source&amp; amp;保存客户端price_by_countries.php在数组中的响应。目的地为钥匙!

如果有人点击或悬停在某个国家/地区,请不要立即调用jquery ajax函数。如果您已经请求了数据并返回数据,请先检查数组!如果没有做ajax请求。如果成功将数据存储在数组中!

卢西恩