PHP включает работает, JQuery. Load не - PullRequest
0 голосов
/ 15 апреля 2011

Почему это работает:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id="graph">
<? include('sites/test.php') ?>
</div>
</body>

Но это не так:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id="graph">
</div>
<script>
$(document).ready(function() {         
    $('#graph').load('sites/test.php');    
});
</script>
</body>

Вот test.php, если требуется:

<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="./data.js"></script>
<div id="text" style="width:500px;height:500px;position:relative;border:1px solid red;">
<div id="map_canvas" style="border:1px solid green;"></div>
</div>

<script type="text/javascript">
var map;
function initialize() {
    var myLatlng = new google.maps.LatLng(-36.42,145.704);
    var myOptions = { zoom: 16, center: myLatlng, mapTypeId: google.maps.MapTypeId.SATELLITE }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    // Create polygon overlays from site data in file data.js included above
    // Overlays are defined by a set of coordinates
    // We will also be setting up an infowindow with the site name
    // The infowindow will be designed to point to the 'center' of each site so we calculate the 'centroid' of each overlay in the code below as well
    var overlay;
    var number_of_overlays = 29;

    for (var k = 0; k < number_of_overlays; k++) {
        var pk = primaryKeys[k];
        var verticesArray = new Array((eval("siteVertices_" + pk).length) / 2);
        var m = 0;
        var centroidLat = 0;
        var centroidLng = 0;

        for (var n = 0; n < eval("siteVertices_" + pk).length; n += 2)
        {
            verticesArray[m] = new google.maps.LatLng(eval("siteVertices_" + pk)[n], eval("siteVertices_" + pk)[n + 1]);
            m = m + 1;
            centroidLat += eval("siteVertices_" + pk)[n];
            centroidLng += eval("siteVertices_" + pk)[n + 1];
        }

        var cent = new google.maps.LatLng(centroidLat/m, centroidLng/m);

        var overlay = new google.maps.Polygon({
            paths: verticesArray,
            strokeColor: "#FF0000",
            strokeOpacity: 0.5,
            strokeWeight: 1,
            fillColor: "#FF0000",
            fillOpacity: 0.20,
            position: cent,
            map:map });

        attachInfoWindow(overlay, k);
    }
}

function attachInfoWindow(overlay, number) {
  var infowindow = new google.maps.InfoWindow({ content: siteNames[number] });
  google.maps.event.addListener(overlay, 'click', function() { infowindow.open(map, overlay); });
}
    window.onload=initialize;
</script>

Мне действительно нужно использовать jquery для события щелчка и не могу понять, почему .load не будет работать.

MTIA!

РЕДАКТИРОВАТЬ - Извинения за неопределенность "не работает"! Функция инициализации, похоже, не ... мм, инициализируется. Таким образом, window.onload = initialize работает с использованием include, но не работает с использованием .load.

Надеюсь, это понятнее.

Ответы [ 3 ]

1 голос
/ 15 апреля 2011
window.onload=initialize;

, который будет выполняться в браузере, вызывая это событие - при загрузке через jquery это событие давно прошло.Просто измените эту строку на:

initialize();
0 голосов
/ 15 апреля 2011

Я бы сказал, потому что скрипт PHP будет смотреть на свой рабочий путь, чтобы включить путь, в то время как JavaScript будет смотреть на путь URL.

0 голосов
/ 15 апреля 2011

Если вы по-новому взгляните на свой код, .load выполняется после загрузки документов.Принимая во внимание, что include является мгновенным.

Это имеет много побочных эффектов.Я призываю вас просмотреть созданный браузером источник для более подробной информации.

Во-первых, вы не можете использовать <link/> теги в теле.Другое дело, что если API Карт Google использует функциональность document.ready, он больше не будет работать.

...