Вызов PHP-скриптов из Javascript без оставления текущей страницы

У меня возникли проблемы с вызовом скриптов PHP из Javascript, не выходя из текущей HTML-страницы (если это вообще возможно). Я понимаю, что можно использовать AJAX, хотя возможно ли использовать Javascript?

Контекст: –

Я хочу, чтобы моя страница выполняла короткую анимацию с использованием Javascript (с использованием onclick), а затем сразу вызывала скрипт PHP для вставки данных в базу данных MySQL – все, не покидая страницу, чтобы она не блокировала анимацию.

Часть анимации, которую я могу сделать, и вставить данные в базу данных и т. Д., Но как я могу вызвать PHP-скрипт в конце этой функции анимации Javascript?

Будем очень благодарны за любые указатели, фрагменты кода и т. Д.! ^ _ ^

Извините, если этот вопрос задан ранее.

AJAX – это асинхронный Javascript и XML, его технология Javascript, позволяющая отправлять запрос на сервер (как ваш браузер делает, когда вы вводите URL-адрес), и иметь ответ в строке javascript вместо того, чтобы отображать его на странице.

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

сделайте это с помощью jQuery:

<script> $.get("backend.php",{param:value},callbackFunction); callbackFunction(data) { alert(data); } </script> 

Просто случилось то же самое, поэтому я придумал что-то подобное. Все, что вам нужно сделать, это добавить код, который вам нужен, и назначить функцию do_the_script событию onclick.

 <script type="text/javascript"> var myIntv; function do_the_script() { // play animation ... var address='fancy_script.php'; var tmp = new XMLHttpRequest(); myIntv=setInterval(function(){ tmp.addEventListener("load", doneHandler, false); tmp.open("POST", address); tmp.send(null); }, 1000); } function doneHandler(event) { // maybe do something when script is executed clearInterval(myIntv); } </script> 

Как вы могли заметить, код, который «вызывает» адрес, выполняется каждые 1 секунду. Это означает, что вызов выполняется достаточно времени, чтобы получить один положительный ответ, вызовите doneHandler и очистите интервал после этого. Если вы считаете, что ваш сервер может реагировать быстрее или медленнее, вы должны соответственно изменить эти миллисекунды.

вы можете использовать jquery ajax:

http://api.jquery.com/jQuery.ajax/

PHP – это серверный язык. JavaScript – это клиентский язык.

Если вы хотите выполнить код на стороне сервера, у вас нет выбора совершить кругосветное путешествие на сервер. Если вы не хотите покидать страницу, ваш единственный вариант выполняет асинхронный запрос (aka AJAX).

Использование библиотеки JavaScript, такой как jQuery или MooTools, значительно упрощает эту задачу. Например, вы можете использовать MooTools для выполнения запроса в конце вашего сценария как такового:

 var req = new Request({url: '/backend/doPHPInsert.php'}); req.send(); 

Есть способы сделать это без AJAX, например, путем создания iFrame динамически (или любого другого элемента, который извлекает ресурс).

Я понимаю, что можно использовать AJAX, хотя возможно ли использовать Javascript?

Если вы не хотите использовать XHR, вы можете использовать этот уродливый взлом …

 var request = 'mysql-insert.php', image = new Image(); image.onload = function() { // Success } image.onerror = function() { // Error } image.src = request; 

За исключением того, что это было действительно реально использовано до широкого использования AJAX (или требуется сделать запрос на перекрестный домен).

Я бы просто использовал AJAX. jQuery предоставляет отличные абстракции для работы с XHR.

У этого есть некоторые хорошие примеры для использования unadulterated XMLHttpRequest: https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest

(В частности, прокрутите вниз до асинхронных примеров – теперь вы готовите с газом.)

Изменить: см. Также http://msdn.microsoft.com/en-us/library/ms535874%28v=vs.85%29.aspx, в котором есть примеры для работы с версиями IE, которые не имеют собственного window.XMLHttpRequest .

Теперь давайте будем откровенны – да, работа с самим XHR (особенно кросс-браузером) является довольно тупой. Вы можете использовать что угодно (jQuery, Dojo, MooTools, Prototype, Closure, YUI и т. Д.), Чтобы сделать XHR более легко, потому что все они, среди прочего, дают вам более сжатые средства XHR.

По-прежнему хорошо знать, с чем вы работаете, но перед тем, как начать, пусть библиотека сделает это за вас. 🙂

Если вы не хотите включать библиотеку jquery, вы можете просто сделать следующее

a) ad iframe, размер 0px, чтобы он не был виден, href пуст

b) выполнить это в вашей js-кодовой функции

  window.frames['iframename'].location.replace('http://....your . php'); 

Это выполнит скрипт php, и вы можете, например, сделать обновление базы данных …