2012-06-18 25 views
11

Có tương đương như sau:Thay thế cho tiêu đề ("Kiểu nội dung: văn bản/xml");

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

Tôi đang sử dụng Google Maps với Wordpress và tôi nhận được "header already sent" lỗi. Tôi đã đi qua tất cả các tập tin và đưa ra tất cả các khoảng trắng nhưng lỗi vẫn xuất hiện để chỉ tự hỏi nếu có một cách khác để làm mã ở trên.

Đây là lỗi:

Warning: Cannot modify header information - headers already sent by (output started at /home/medicom/public_html/mapping/wp-content/themes/default/header.php:11) in /home/medicom/public_html/mapping/wp-content/themes/default/new-version1.php on line 45 

Và đây là trang của tôi - http://www.mediwales.com/mapping/test/

<?php 
/** 
* @package WordPress 
* @subpackage Default_Theme 
* Template Name: Latest Version 
*/ 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head profile="http://gmpg.org/xfn/11"> 
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type');?>; charset=<?php bloginfo('charset');?>" /> 
<title><?php wp_title('&laquo;', true, 'right');?></title> 
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url');?>" type="text/css" media="screen" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<script src="<?php bloginfo('template_directory'); ?>/markerclusterer.js" type="text/javascript"></script> 
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> 
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAdnbfsmnsdaFBmEZfsJEmiWC7p0LLmMBSsffI9l26I_viUYjW7vRG7TlO-sRQKR0B_YAsP2VnDdVgsr4Aegvksdw" type="text/javascript"></script> 
<?php if (is_singular()) wp_enqueue_script('comment-reply'); ?> 
<?php wp_head(); ?> 
</head> 
<body <?php body_class(); ?> onload="load()" onunload="GUnload()"> 
    <?php if (have_posts()) : ?> 
     <?php while (have_posts()) : the_post(); ?> 
    <div id="body"> 
<?php 
require("database.php"); 
function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 
// Opens a connection to a MySQL server 
$connection=mysql_connect (localhost, $username, $password); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 
// Set the active MySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 
// Select all the rows in the markers table 
$query = "SELECT * FROM markers WHERE 1"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
header("Content-type: text/xml"); 
// Start XML file, echo parent node 
echo '<markers>'; 
// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 
// End XML file 
echo '</markers>'; 
?> 
<script type="text/javascript"> 
    //<![CDATA[ 
    var iconBlue = new GIcon(); 
    iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png'; 
    iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; 
    iconBlue.iconSize = new GSize(12, 20); 
    iconBlue.shadowSize = new GSize(22, 20); 
    iconBlue.iconAnchor = new GPoint(6, 20); 
    iconBlue.infoWindowAnchor = new GPoint(5, 1); 
    var iconRed = new GIcon(); 
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png'; 
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; 
    iconRed.iconSize = new GSize(12, 20); 
    iconRed.shadowSize = new GSize(22, 20); 
    iconRed.iconAnchor = new GPoint(6, 20); 
    iconRed.infoWindowAnchor = new GPoint(5, 1); 
    var customIcons = []; 
    customIcons["restaurant"] = iconBlue; 
    customIcons["bar"] = iconRed; 
    function load() { 
     if (GBrowserIsCompatible()) { 
     var map = new GMap2(document.getElementById("map")); 
     map.addControl(new GSmallMapControl()); 
     map.addControl(new GMapTypeControl()); 
     map.setCenter(new GLatLng(47.614495, -122.341861), 13); 
     GDownloadUrl("phpsqlajax_genxml.php", function(data) { 
      var xml = GXml.parse(data); 
      var markers = xml.documentElement.getElementsByTagName("marker"); 
      for (var i = 0; i < markers.length; i++) { 
      var name = markers[i].getAttribute("name"); 
      var address = markers[i].getAttribute("address"); 
      var type = markers[i].getAttribute("type"); 
      var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
            parseFloat(markers[i].getAttribute("lng"))); 
      var marker = createMarker(point, name, address, type); 
      map.addOverlay(marker); 
      } 
     }); 
     } 
    } 
    function createMarker(point, name, address, type) { 
     var marker = new GMarker(point, customIcons[type]); 
     var html = "<b>" + name + "</b> <br/>" + address; 
     GEvent.addListener(marker, 'click', function() { 
     marker.openInfoWindowHtml(html); 
     }); 
     return marker; 
    } 
    //]]> 
    </script> 
    <div id="map" style="width: 500px; height: 300px"></div> 
</div> 
     <?php endwhile; ?> 
    <?php endif; ?> 
</div> 
<?php wp_footer(); ?> 
</body></html> 
+1

Không có tương đương. Sửa chữa là để tìm ra nơi có nội dung đó là buộc các tiêu đề được gửi đi. Bạn đã nghe nói về Dấu đơn hàng Byte chưa? Đó có thể là vấn đề của bạn. Nó cũng có thể là một cái gì đó rõ ràng như Wordpress gửi nội dung trước khi bạn gọi 'header()'. –

+2

Lỗi nào sẽ trỏ đến lỗi "tiêu đề đã gửi"? Bạn sẽ nhận được một tên tập tin chính xác và số dòng –

+0

@Pekka Tôi đã cố gắng giải quyết vấn đề này trước đây và chỉ cần bỏ cuộc! Cập nhật câu hỏi của tôi với nhiều thông tin hơn. – Rob

Trả lời

9

Bây giờ tôi thấy những gì bạn đang làm. Bạn không thể gửi đầu ra tới màn hình, sau đó thay đổi tiêu đề. Nếu bạn đang cố gắng tạo một tệp XML của điểm đánh dấu bản đồ và tải xuống chúng để hiển thị, chúng phải nằm trong các tệp riêng biệt.

Đi này

<?php 
require("database.php"); 
function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 
// Opens a connection to a MySQL server 
$connection=mysql_connect (localhost, $username, $password); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 
// Set the active MySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 
// Select all the rows in the markers table 
$query = "SELECT * FROM markers WHERE 1"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
header("Content-type: text/xml"); 
// Start XML file, echo parent node 
echo '<markers>'; 
// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 
// End XML file 
echo '</markers>'; 
?> 

và đặt nó trong phpsqlajax_genxml.php nên javascript của bạn có thể tải về các tập tin XML. Bạn đang cố gắng làm quá nhiều thứ trong cùng một tệp.

+0

Rực rỡ, cảm ơn rất nhiều! – Rob

+0

@ Teamworksdesign.com Không sao – Nick

2

số Bạn không thể gửi header sau khi họ đã được gửi. Hãy thử sử dụng móc trong wordpress

+0

Tôi sẽ sử dụng móc để làm điều đó như thế nào? Tôi cũng đã cập nhật câu hỏi của mình với một số thông tin khác. – Rob

Các vấn đề liên quan