2013-01-06 23 views
-2

我正在构建一个搜索功能来检索Google地图的XML数据。如何发送PHP变量并使用Jquery(无回声)检索它们?

除此之外,我想显示实际找到的结果数量。

我想过在实际文档中做一个回声,但是这可能会混淆我的标记数据。在成功调用之后,我将如何获取PHP变量并在Jquery中检索它?

如果我的PHP是这样的:

$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
$num_rows = mysql_num_rows($result); 

和jQuery这样的:

$.ajax({ 
     type: "POST", 
     url: "MapSearchxml.php", 
     data: { 
      dataFromDate: FromDate, 
      //lalala 
      dataHasPatio: HasPatio 
     }, 
     beforeSend: function (html) { // this happens before actual call 
      $("#results").html('Please Wait'); 
      $("#searchresults").show(); 
      $(".phpFromDate").html(FromDate); 
     }, 
     success: function (data, status, jqXHR) { 

     //Success? 
     }, 
     dataType: 'xml' 
    }); 
+0

您需要“回显”某些内容。在这种情况下,它将是* combined * XML文档。 – 2013-01-06 00:37:01

+1

转储到文件并使用apache的mod x-sendfile可能 - 没有不是真的:/ – hakre

回答

1

可能会发现它更容易在PHP中创建数组并发送JSON。在客户端是容易遍历响应对象/阵列

$output=array('status'=>'', 'results'=>array()); 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
$num_rows = mysql_num_rows($result); 

if($num_rows){ 
    $output['status']='ok'; 
    /* push row data to $output['results'][]; in while loop*/ 
}else{ 
    $output['status']= 'No results'; 
} 

echo json_encode($output); 

然后jQuery中:

success:function(data){ 
    if (data.status != 'No results'){ 
     /* count array length*/ 
     var count= data.results.length; 
     /* loop over data.results array*/ 
    } 
} 

/* change dataType to "json"*/ 

我忘count和jQuery中加入它...也可以将count属性添加到$output php阵列并使用$num_rows填充

1

只是想了一个JSON例子对你来说,有回音,但你可以做复杂的事情吧?

不知道这是你的后?我知道你不想对每个变量进行回显,而且如果使用JSON,你也不会这么做。

<?php 
$simple = 'simple string'; 
$complex = array('more', 'complex', 'object', array('foo', 'bar')); 
?> 
<script type="text/javascript"> 
var simple = '<?php echo $simple; ?>'; 
var complex = <?php echo json_encode($complex); ?>; 
</script> 
+0

显示输出,并将其设为我建议的jsonp。 – hakre

1

你知道,AJAX成功的是一个html代码。如果你AJAX一个完整的HTML页面,你会得到它,从<html>开始,并以</html>结束。你可以在你的返回html数据上做一个特殊的markap,比如[sepcial_info : 'INFO']或somthing,然后只是对它进行过滤。

1

好吧,我需要一点破译你的问题,也许我还是错了,让我们试试:

什么你试图做的是技术上不可能与你心目中是什么。简而言之:如果您执行一个Ajax请求,则返回一个响应。调用success函数时,您的PHP脚本已经消失。所以你只能传递一个返回值。

然而,你可以做的是,你使该返回值是一个嵌套的值,例如,包含两个部分:

  1. 你已经回到
  2. 计数

这可能是您的解决方案的XML文档。如果你问如何,我会将count作为名称空间的值添加到XML中,然后使用javascript处理它。

由于您在这里没有显示任何代码,因此我无法举一个快速示例(我将其留作未来问题的指针)。添加名称空间元素,就像PHP中的DOMDocument一样,属性非常简单。

相关问题