【问题标题】:IE8 and reading XML via AJAXIE8 和通过 AJAX 读取 XML
【发布时间】:2011-04-01 17:56:44
【问题描述】:

我有一个商店定位器,在这里使用 Google Maps、PHP/Mysql 和 jQuery 构建: http://tinyurl.com/4w8nwwp

FF、Safari、Chrome 和 Opera 中的一切都是花花公子。 IE7、8无法读取parse_location.php动态生成的XML

AJAX 代码:

function reloadMap(map, dataString) {
    markersArray = [];
    var infoWindow = new google.maps.InfoWindow({content: "loading...", maxWidth:100});
    var storeListHtml = '<h2>Name <span style="margin-left:252px;">Address</span></h2><ul>';

$.ajax({
    type: "GET",
    url: "parse_location.php",
    data: dataString,

    success: function(text){

        count = -1;


        $(text).find("list").each(function()
        {
            count++;
            if(count == 0)
            {
                var burnsvilleMN = new google.maps.LatLng($(this).attr("lat"),$(this).attr("lng"));
                map.panTo(burnsvilleMN);
            }

            var store = [$(this).attr("name"), $(this).attr("address"), $(this).attr("lat"), $(this).attr("lng"), count];

            var name = $(this).attr("name");
            var address = $(this).attr("address");
            var point = new google.maps.LatLng($(this).attr("lat"),$(this).attr("lng"));
            var html = "<span class='info'><b>" + name + "</b> <br/>" + address + "</span>";
            var image = new google.maps.MarkerImage('images/icon_dot2.png');
            var shadow = new google.maps.MarkerImage('images/icon_dot_shadow.png');
            var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: image,
                shadow:shadow
                //shadow: icon.shadow
            });

            //markersArray.push(marker);

            storeListHtml += "<li class='store'><a href='javascript:myclick("+count+")'><div class='store-name'>"+name+"</div><div class='store-add'> "+address+"</div></a></li>";


            bindInfoWindow(marker, map, infoWindow, html);
        }); 
        storeListHtml += '</ul>';

        $("#store-list").html(storeListHtml);
    }
});

}

如您所见,这涉及调用 parse_location.php,获取此代码生成的 XML: // 取消注释以下行会导致 ff、safari 等不显示任何内容。 // header('Content-Type: text/xml; charset=UTF-8');

$responce = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$responce .= "<location>\n"; 
$city = $_GET['city'];
$category = $_GET['category'];

[这里的SQL查询]

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
    $responce .= "<list name=\"".$row["name"]."\" 
            address=\"".$row["street_address"]." ".$row["city"]." ".$row["state"].", ".$row["zip"]."\" 
            lat=\"".$row["lat"]."\" 
            lng=\"".$row["lng"]."\" />";




}



$responce .= "</location>";
$responce8 = utf8_encode($responce);
echo $responce8;

任何指针???

里士

【问题讨论】:

  • 您应该在您的代码 sn-ps 前后添加一个空行,以确保它们的格式正确。除此之外:您是否尝试过直接通过 IE 的地址栏打开脚本的 URL?了解问题是关于内容还是 xhr 请求本身会很有帮助。
  • 嘿 herenvardo,感谢您的提示,我一定会更好地格式化代码,这是我第一次在问题中发布代码。也就是说,我尝试直接运行 parse_location.php,我只是在该页面上输出用户代理。真的不知道该怎么做。

标签: php xml ajax google-maps internet-explorer-8


【解决方案1】:

Content-Type 标头添加到您的 php 代码中,如下所示:

header('Content-Type: text/xml'); // Try "application/xml" too

另外,添加另一个特定于 IE 的标头可能会有所帮助:

header('X-Content-Type-Options: nosniff');

当然,您需要在输出任何其他内容之前执行此操作,因为它们是 headers

【讨论】:

  • 谢谢乔恩,我都试过了,第一个,header('Content-Type: text/xml');实际上限制了一些结果在 FF/Chrome/Safari 中显示。 IE 特定的标头在 IE8 中不起作用。我在想商店名称中的特殊字符 (?)?
  • @frishi: 特殊字符不重要:你用 UTF-8 编码并告诉浏览器,所以它知道如何解码。
  • 谢谢,我想我已经在两个城市展示了列表:圣地亚哥和奥斯汀。所有其他地点仍然缺失。
  • 此外,当我删除标题行时,一切都在 FF/Chrome/Safari 中正常运行。 IE8 一无所获。
  • @frishi:您可以展示的两个城市有什么不同?
猜你喜欢
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多