我正在构建一个搜索功能来检索谷歌地图的XML数据。
除此之外,我想显示实际找到的结果数量。
我想过在实际文档中做一个echo,但是这可能会弄乱我的标记数据。在成功调用后,我如何获取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 :(得分: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>
答案 1 :(得分:1)
你知道,AJAX成功的是一个HTML代码。如果你是AJAX一个完整的html页面,你会得到它,从<html>
开始到</html>
结束。你可以在返回的html数据上做一个特殊的标记,比如[sepcial_info : 'INFO']
或somthing,然后只是过滤它。
答案 2 :(得分:1)
好的,我需要一些解释你的问题,可能我还是错的,让我们试试:
您尝试做的事情在技术上并不可能与您的想法有关。简而言之:如果您执行一个Ajax请求,则返回一个响应。调用success
函数的那一刻,您的PHP脚本已经消失。所以你只能传递一个返回值。
但是,您可以做的是,您将该返回值设为嵌套值,例如包含两部分:
这可能是你的解决方案。如果你问如何,我会将计数作为命名空间值添加到XML中,然后使用javascript处理它。
由于你没有在这里显示任何代码,我不能给出一个快速的例子(我将其留作未来问题的指针)。添加一个名称空间元素,就像PHP中的DOMDocument
非常简单一样。
答案 3 :(得分: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
php数组添加$output
属性并使用$num_rows
填充