Передать значение PHP через JavaScript

#php #javascript #mysql

#php #JavaScript #MySQL

Вопрос:

Интересно, может ли кто-нибудь мне помочь, пожалуйста.

В настоящее время я использую приведенный ниже код для успешного преобразования ссылок на сетку ОС в координаты широты и долготы. Это делается с помощью события щелчка по кнопке в моей HTML-форме.

 function converttolatlng() {
    var gr = document.getElementById('osgridref').value;

    var osgb = new GT_OSGB();


    if (osgb.parseGridRef(gr)) {
        var wgs84 = osgb.getWGS84();

        document.getElementById('osgb36lat').value = wgs84.latitude;
        document.getElementById('osgb36lon').value = wgs84.longitude;
    }
    else {
        document.getElementById('osgb36lat').value = "n/a";
        document.getElementById('osgb36lon').value = "n/a";
    }

}
  

Теперь я хочу представить некоторые ссылки на сетку ОС (около 22 000) из внешнего XML-файла, который я хочу преобразовать перед загрузкой информации в базу данных MySQL (и, следовательно, не будет проходить через событие «щелчок» в обычной форме), но я действительно не уверен, как это сделать.

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

Любая помощь будет с благодарностью принята.

Большое спасибо

Комментарии:

1. Какое это имеет отношение к PHP?

Ответ №1:

Если я правильно понял ваш вопрос, и вы действительно просто хотите избежать необходимости нажимать кнопку, вы можете просто вызвать свою функцию в a <script> в нижней части вашего HTML. Скрипт будет выполнен, как только браузер отобразит его, поэтому, пока необходимые элементы уже находятся на странице над ним и XML загружен, он должен работать нормально.

 <!-- after most of your HTML, but before the closing <body> -->
<script type='text/javascript'>
  converttolatlng();
</script>

</body>
</html>
  

Если вам нужна полная загрузка страницы и у вас есть некоторые внешние зависимости, загруженные скриптами, которые должны быть на месте, используйте window.onload свойство внутри <head> тега HTML:

 <script type='text/javascript'>
  window.onload = converttolatlng();
</script>
  

Комментарии:

1. Привет, большое спасибо, что нашли время ответить на мой пост. В идеале я бы хотел полностью обойти HTML-форму, если смогу. Таким образом, его можно запускать как запланированное задание в часы, когда количество пользователей моего сайта будет очень низким. С уважением

Ответ №2:

Быстрый способ сделать это (и изучить инструмент, который будет очень полезен в будущем) — использовать инструмент ETL, такой как Pentaho Kettle. Это визуальный инструмент, который вы можете подключить к своей базе данных и к своему XML-файлу, выполнить пошаговые преобразования, а затем нажать «Выполнить». Он выполнит все преобразования за вас.

Если вам нужно, вы можете использовать библиотеку java OSGB в Pentaho, чтобы выполнить преобразование за вас, но вы также можете использовать библиотеки Javascript. Документации Pentaho немного не хватает, и к ней нужно немного привыкнуть, но как только вы поймете это, это ускорит любой ETL-проект, на который вам может потребоваться всего несколько минут вместо часов.

С другой стороны, если библиотека OSGB недоступна в PHP, я бы просто запустил ее как цикл через Javascript и с помощью jQuery.Функция Json, передает результаты в PHP для записи в БД. Таким образом, вы можете передавать асинхронные объекты и иметь дело только с теми преобразованиями / записями в БД, которые завершаются с ошибкой.

Проверьте PHPCoord