Чтение текстового файла из внешней папки через имя XML-пути (API Google Maps) - PullRequest
0 голосов
/ 19 августа 2011

Я создаю веб-страницу на основе API карт Google для каждого запроса клиента.Я извлекаю данные из базы данных в xml, который затем связывается с маркерами на карте (часть данных для каждой записи - это широта и долгота, которые устанавливают маркер).Когда пользователь нажимает на маркер, он видит контент, относящийся к этому месту, в div страницы (контент - это заголовок, фотография, аудиофайл и расшифровка аудиофайла).

Все работает, кроме... Я не могу понять, как отобразить стенограмму, которая представляет собой текстовый файл.Узел xml содержит полный путь, а папка с текущим файлом хранится на сервере.Я знаю, как это сделать с помощью php, но не могу переименовать мой файл с расширением php, потому что API Карт Google не разрешит этого (карта исчезнет).

Вот соответствующая часть кода:

downloadUrl("xmlTest.php", function(data) 
  {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("Sound_xcrpt");
    for (var i = 0; i < markers.length; i++) 
    {
      var title = markers[i].getAttribute("se_title");
      var desc = markers[i].getAttribute("se_desc");
      var type = markers[i].getAttribute("se_contrib");
      var ph_title = markers[i].getAttribute("ph_title");
      var ph_web = markers[i].getAttribute("ph_web");
      var ph_thumb = markers[i].getAttribute("ph_thumb");
      var trans_ex = markers[i].getAttribute("trans_xcrpt");        
      var audio = markers[i].getAttribute("se_audio_file");
      var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("se_lat")),
          parseFloat(markers[i].getAttribute("se_lng")));


      var html =   

      '<head>' +
      '<link rel="stylesheet" href="infoStyle.css" type="text/css">' +
      '</head>' +
      '<html>' +
      '<body>' +        
      '<header id="title">' + title + '</header>' + 
      '</section id="desc">' + desc +
      '</section>' +
      '<section id="photo_thumb">' +
      '<img src="'+ph_thumb+'"/>' +
      '</section>' +
      '</body>' +
      '</html>';

      var winHtml = 
      '<head>' +
      '<link rel="stylesheet" href="styleWin2.css">' +
      '</head>' +
      '<body>' +
      '<header id="title2">' + ph_title + '</header>' +
      '<div class="photos">' + 
      '<img src="'+ph_web+'"/>' + 
      '</div>' +
      '<div class="trans">' +trans_ex+  
      '</div>' +
      '<footer id="audio">' +
      '<audio autoplay="autoplay" controls="controls">' + 
      '<source src="'+audio+'">' +
      '</audio>' +
      '</footer>' +
      '</body>';

      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker(
      {
        map: map,
        position: point,
        icon: icon.icon,
        animation: google.maps.Animation.DROP,
        shadow: icon.shadow
      });

      bindInfoWindow(marker, map, infoWindow, html);
      contentBox(marker, map, content, winHtml, infoWindow);

    }
  });
}

"trans_ex" содержит массив имен путей.При настройке кода выше, он отображает фактическое имя пути в div, а не содержимое текстового файла, на который указывает это имя пути.

Есть ли метод javascript (или jquery) для выполненияэтот?Я знаю, что это сложно, потому что у меня есть запрос на стороне сервера.

Спасибо за вашу помощь, Шерил

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Вам нужно позвонить в AJAX, чтобы получить стенограмму с сервера и добавить ее в DIV после щелчка маркера. Объект XMLHttpRequest во втором комментарии является основой AJAX, и у jquery есть очень хорошая абстракция для этого через jQuery.ajax () (http://api.jquery.com/jQuery.ajax/).

Это в основном скрывает сложности во ваших вторых комментариях и позволяет вам иметь дело с тем, что вы хотите сделать, как только ответ поступит. В вашем случае вы бы хотели, чтобы DIV для транскрипта был заполнен ответом из транскрипта.

Фактически, jQuery сделал дополнительную абстракцию, предоставив функцию load () (http://api.jquery.com/load/).. Вам нужно вызывать эту функцию при событии щелчка для маркера и указывать правильный путь для расшифровки

0 голосов
/ 20 августа 2011

Вы хотите отобразить содержимое текстового файла?Парню по следующему URL тоже нужно было прочитать содержимое текстового файла.Может быть, это поможет?

jquery - Читать текстовый файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...