Использование скрытых фреймов для запуска скриптов PHP - хорошо? плохой? мнения? - PullRequest
1 голос
/ 31 мая 2010

Я немного новичок в области PHP / MYSQL, и у меня была идея, чтобы иметь возможность взаимодействовать с моей базой данных, используя скрытый Iframe для запуска PHP-страниц в фоновом режиме (iframe) на событиях, не выходя из текущая страница?

Хорошо? Плохой? Обычная практика? Мнения?

Ответы [ 4 ]

3 голосов
/ 31 мая 2010

В большинстве случаев это плохо, но иногда неизбежно.

Обычная практика - использовать AJAX, настолько часто, что даже в W3School есть статья об этом.

Преимущества использования AJAX над IFrame в том, что AJAX может быть многопоточным. Вы можете отправить несколько запросов подряд, что более сложно реализовать с помощью IFrames. Более того, AJAX поддерживает код состояния, поэтому вы можете обнаруживать ошибки, где с помощью IFrames вам придется полагаться на очистку HTML страницы и надеяться, что вы определили правильный статус, посмотрев HTML-код страницы ошибки.

AJAX более идиоматичен для JavaScript и основан на событиях, что означает, что ваш обратный вызов будет автоматически получать уведомления при получении ответа. С IFrame вам нужно будет setTimeout() и продолжать опрашивать IFrame для получения ответа, который может легко сломаться.

IFrame иногда неизбежен в тех случаях, когда вы хотите загрузить файл, не покидая текущей страницы. Но это, вероятно, не ваша задача, поскольку вы упомянули только взаимодействия с базой данных.

Научитесь использовать XMLHttpRequest, который является основой AJAX. После того, как вы ознакомитесь с этим, попробуйте сделать это забавным, используя такие JavaScript-фреймворки, как jQuery, Dojo и т. Д.

0 голосов
/ 31 мая 2010

Скрытый метод iframe использовался до принятия API XMLHttpRequest (возможно, вы слышали о нем как Ajax).

Несколько лет назад я использовал прежнюю реализацию, использующую rslite , но в настоящее время эта техника имеет для меня только историческую ценность.

Вы можете получить указания по использованию техник Ajax в простом javascript на http://www.xul.fr/en-xml-ajax.html или, что лучше, вы можете выбрать использование общей библиотеки, jquery или mootools другие, чтобы иметь дело с различными реализациями в разных браузерах.

0 голосов
/ 31 мая 2010

Я думаю, что-то должно случиться, когда ваша база данных что-то делает, верно? То есть Ваша страница должна давать какую-то обратную связь, может быть, обновить номер или текст.

Так что вы все равно будете использовать Javascript. В этом случае пропустите iframe и просто отправьте запросы AJAX.

0 голосов
/ 31 мая 2010

Обычно это достигается с помощью AJAX. Библиотека jQuery javascript позволяет легко

Я не думаю, что использование iframes - хороший способ сделать это. Вам все еще нужно включить javascript для изменения местоположения iframe, и если javascript доступен, то почему бы просто не использовать AJAX?

Если вы используете iframe, вы не сможете получить ответ от сервера каким-либо значимым образом без большого количества обходных путей. Например, используя jQuery, вы можете отправить некоторую информацию на сервер с помощью одного вызова функции, а затем, когда этот запрос завершится, можно вызвать функцию обратного вызова с информацией ответа от сервера:

$.post("ajax.php", { var1: "data", var2: "moredata" },
   function(data){
     alert("Server says: " + data);
   });

В этом примере, когда запрос завершается, появляется окно с выводом ajax.php.

С помощью iframe вы можете сделать что-то вроде изменения местоположения iframe на server.com/iframe.php?var=data&var2=moredata&var3=moredata, затем немного подождать и захватить содержимое iframe (если это возможно) и сделать что-то с этим.

Не говоря уже о том, что когда вы сталкиваетесь с проблемами при этом, вы, вероятно, попросите совета по SO. и каждый раз люди, вероятно, скажут: «Брось это и используй jQuery!» :) может также пропустить всю боль и страдание и сделать это правильным путем, чтобы начать с

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