-2

我正在构建一个搜索功能来检索谷歌地图的 XML 数据。

除此之外,我想显示实际找到了多少结果。

我想过在实际文档中做一个回显,但这可能会弄乱我的标记数据。成功调用后,我将如何获取 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'
    });
4

4 回答 4

1

只是为您尝试一个 JSON 示例,这有 echo 但您可以用它做复杂的事情吗?

不知道这是否是你的追求?我知道您不想对每个变量进行回显,如果使用 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>
于 2013-01-06T00:38:43.857 回答
1

你看,AJAX 获得成功的是一个 html 代码。如果你 AJAX 一个完整的 html 页面,你会得到它,以 . 开头<html>和结尾</html>。您可以在返回的 html 数据上做一个特殊的标记,比如[sepcial_info : 'INFO'] 或其他东西,然后过滤它。

于 2013-01-06T00:40:12.517 回答
1

好的,我需要一点来破译你的问题,可能我还是错了,让我们试试:

根据您的想法,您尝试做的事情在技术上是不可能的。简而言之:如果您执行一个 Ajax 请求,您将返回一个响应。调用该success函数的那一刻,您的 PHP 脚本就已经消失了。所以你只能传递一个返回值。

但是,您可以做的是,将该返回值设置为嵌套的,例如包含两个部分:

  1. 您已经返回的 XML 文档
  2. 伯爵

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

由于您没有在此处显示任何代码,因此我无法为您的案例提供一个简单的示例(我将其作为您未来问题的指针)。DOMDocument添加命名空间元素,就像在 PHP 中使用属性一样非常简单。

于 2013-01-06T00:44:47.873 回答
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属性添加到$outputphp数组并用于$num_rows填充

于 2013-01-06T00:46:39.923 回答