как передать параметры на страницу php, не загружая ее - PullRequest
0 голосов
/ 22 июля 2011

как я могу передать параметры с html-страницы (map.html) на php (createxml.php) без необходимости открывать страницу php?Я включаю googlemaps в html-страницу (map.html), поэтому я хочу, чтобы пользователи вводили данные в форму на html-странице, которая будет отправлена ​​в php (createxml.php), который, в свою очередь, подключится к базе данных mySQL и создаст формат xml.из ответа html-страница использует этот вывод xml для создания позиций на карте, поскольку она содержит долготу и широту.Я использовал следующий код в заголовке страницы php (createxml), но он на короткое время показывает содержимое файла php, перенаправляя меня на map.html Спасибо за ваше время, я могу опубликовать весь код, если это необходимо.

      <meta http-equiv="refresh" content="0;url=http://localhost/map.html/"> 

Ответы [ 5 ]

2 голосов
/ 22 июля 2011

С AJAX все очень просто, используя jQuery, вам не нужно много знать об этом :) Поэтому просто импортируйте самую последнюю библиотеку jQuery .

Тогда у вас есть форма:

<form id="my_form">
<input type="text" name="param1" />
<input type="text" name="param2" />
<input type="hidden" name="action" value="do_stuff" />
<input type="submit" value="Submit" />
</form>

и где-то ниже, вы просто вставляете эту крошечную функцию javascript, которая обрабатывает отправку формы:

<script>
  $('#my_form').submit(function(){
    var post_params = $('#my_form').serialize();
    $('#waiting').show();
    $.post('the_page_you_are_on.php', post_params, function(data) {
      $('#waiting').hide();
      return false;
    })
  });
</script>

(Элемент (div, p ...) с идентификатором "ожидание" может, например, содержать одно из этих причудливых загрузочных изображений ajax, но не обязательно! :) Если вы хотите, чтобы один отображался, найдите его через Google установите его в качестве фонового изображения элемента # wait и установите для его отображения значение none (CSS).

Сама функция просто вызывает страницу, на которой вы находитесь, а затем у вас есть переменные формы в вашем пост-массиве, поэтому верхняя часть вашей страницы может выглядеть примерно так:

<?php

if(isset($_POST['action'])) {
  switch($_POST['action']) {
    case 'do_stuff' :
      $param1 = $_POST['param1'];
      $param2 = $_POST['param2'];

      //do some DB-stuff etc.
    break;
  }
}

?>

Надеюсь, это поможет!

1 голос
/ 22 июля 2011

Если вы просто пытаетесь передать параметры на страницу PHP из веб-браузера, есть другие способы сделать это, кроме Ajax. Взгляните на эту страницу и просмотрите исходный код (обязательно просмотрите исходный код включенного файла javascript: http://hazlo.co/showlist.php?s=chrome&i=4e289d078b0f76b750000627&n=TODO

Он использует чрезвычайно простой метод изменения src элемента изображения, но передает информацию на веб-сервер (страницу PHP) в строке запроса запроса изображения. В этом примере я на самом деле забочусь о результатах, которые представлены в виде изображения, но похоже, что вы просто пытаетесь передать данные на сервер, поэтому вы можете вернуть изображение в 1 пиксель, если хотите. Кстати, не дайте себя одурачить используемым URL-адресом. Правило сервера указывает apache обрабатывать определенный файл PHP при его проверке, запрашивается GIF.

Вы должны поиграть с ним и использовать встроенный отладчик Firebug или Chrome для просмотра запросов, отправляемых на сервер.

1 голос
/ 22 июля 2011

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

На заметку, что AJAX - это буквально одна функция в javascript.Учиться совсем не сложно.

0 голосов
/ 23 июля 2011

Хорошо, ребята, после нескольких часов головной боли, я наконец нашел решение!По сути, я вызвал свой xmlproduce.php из своего map.html, поясню, так что, может быть, он поможет другим:

maps.html содержит функцию Javascript API googlmap, которая вызывает мой createxml.php, который называется second.php

    GDownloadUrl("second.php", function(data) )

что я сделал, я настроил этот вызов в second.php, добавив некоторые параметры в URL, например:

     GDownloadUrl("second.php?strt="+ysdate+"/"+msdate+"/"+dsdate+"&end="+yedate+"  /"+medate+"/"+dedate+"&id="+ide, function(data)

, который отправляет параметры, необходимые для second.php, поэтому после этогоя сделал небольшую HTML-форму, которая называется сценарий googlemap api в том же файле (map.html) для передачи параметров из формы в GDownloadUrl, о котором я упоминал выше, код формы:

    form method="get" action="">
        IMEI: <input type="text" id="id" name="id" size="25" /> <br />

        Start Date: <input type="text" id="ysdate" name="ysdate" size="4" value="2000" /> <input type="text" id="msdate" name="ysdate" size="1" /> <input type="text" id="dsdate" name="dsdate" size="1" /> <br/>
        End Date:   <input type="text" id="yedate" name="yedate" size="4" /> <input type="text" id="medate" name="ysdate" size="1" /> <input type="text" id="dedate" name="dedate" size="1" /> <br/>

                    <input type="button" value="submit" onClick="load()" />
        </form>

После этого я наложил дополнительные ограничения на форму для допустимых значений.Спасибо всем за помощь, и вы всегда можете спросить, нуждается ли кто-нибудь в разъяснении.

0 голосов
/ 22 июля 2011

Вы не можете получить никаких результатов от PHP-скрипта, если вы не запросите его и не обработаете вывод. Если вы не хотите покидать текущую страницу, вы должны использовать AJAX !

"но на короткое время он показывает содержимое php-файла". Причина в том, что вашему браузеру сначала нужно загрузить всю страницу, а затем запустить перенаправление META. Вам не нужно перенаправление для загрузки данных с сервера, но если вы действительно этого хотите, вам нужно HTTP-заголовки для перенаправления .

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