0

我正在尝试获取我的 xml 标记结果并将它们加载到地图上,但是当我发出警报时,我在变量中得到的发布结果是这样的:

加载的数据:[对象 XMLDocument]

这就是我的代码的样子:

function SendData() {

//get data from inputs

            $.ajax({
                type: "POST",
                url: "MapSearchxml.php",
                data: {
                    dataFromDate: FromDate,
                    //some more data
                    dataHasPatio: HasPatio
                },
                beforeSend: function (html) { // this happens before actual call
                },
                success: function (html) { // this happens after we get results

                alert("Data Loaded: " + html);

                }
            });
}

在 Firebug 中,post 响应如下所示:

<markers><marker id="1" lat="48.153938" lng="17.108459" /></markers>

我尝试将数据类型设置为 xml,如下所示:

                success: function (html) { // this happens after we get results
                alert("Data Loaded: " + html);
                }, 
                dataType: 'xml'
            });
}

然而并没有发生任何变化。

这是我的 xml php 代码:

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


header("Content-type: text/xml");

echo '<markers>';

while ($row = @mysql_fetch_assoc($result)){
  echo '<marker ';
  echo 'id="' . parseToXML($row['ID']) . '" ';
  echo 'lat="' . parseToXML($row['LAT']) . '" ';
  echo 'lng="' . parseToXML($row['LNG']) . '" ';
  echo '/>';
}

echo '</markers>';
4

1 回答 1

1

这就是浏览器在将 XML 对象附加到文本字符串并在警报中显示数据时处理它们的方式。您的 ajax 调用看起来可以正常工作。

您可以尝试更改:

    success: function (html) { // this happens after we get results
       alert("Data Loaded: " + html);
    }, 

只是:

    success: function (html) { // this happens after we get results
       console.log(html);
    }, 

并在 JavaScript 控制台中查看对象。或者:

    success: function (html) { // this happens after we get results
        var xmlString = (new XMLSerializer()).serializeToString(html);
        alert("Data loaded: " + xmlString);
    }, 
于 2013-01-04T18:31:23.433 回答