Как активировать PHP-файл в функции JavaScript - PullRequest
2 голосов
/ 24 августа 2010

Я пытаюсь записать некоторую информацию в свою базу данных, когда активирую функцию javascript.

Я использую PHP и MySQL. Как открыть файл .php, выполнить его и вернуться в файл .js, чтобы функция продолжила свою работу?

Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 24 августа 2010

Я думаю, вы можете быть немного смущены.Javascript запускается в браузере, на компьютере клиента.Php / MySQL работает на сервере, отвечает на запросы HTTP и создает содержимое для отображения / запуска в браузере.

Чтобы эти двое могли динамически взаимодействовать, вам нужно посмотреть, как отправлять / получать HTTP-запросы от javascript на клиенте на ваш php-скрипт на сервере.Вы также должны быть в состоянии обрабатывать ответы в JavaScript.Эта практика называется AJAX.Самый простой способ сделать это, по моему опыту, использовать JSON и jQuery, http://api.jquery.com/jQuery.getJSON/

2 голосов
/ 24 августа 2010

Прежде всего, невозможно вызвать функции PHP напрямую из JavaScript или наоборот. Это связано с тем, что PHP - это сценарий на стороне сервера, работающий на сервере, а JavaScript - это сценарий на стороне клиента, работающий в браузере.

Но есть решение, использующее технику под названием " AJAX " ( A синхронный J avaScript a nd X ML), который можно использовать для отправки запроса на сервер из JavaScript.

Например, используя страницу «пользователь», которую видит пользователь, и страницу «запрос», которая вызывается из кода JavaScript, я мог бы написать следующий код:

userpage.php

<!-- JavaScript code -->
<script type="text/javascript">
function sendRequestToServer()
{
  // The XMLHttpRequest object is used to make AJAX requests
  var ajax = new XMLHttpRequest();
  // The onreadystatechange function will be called when the request state changes
  ajax.onreadystatechange = function()
  {
    // If ajax.readyState is 4, then the connection was successful
    // If ajax.status (the HTTP return code) is 200, the request was successful
    if(ajax.readyState == 4 && ajax.status == 200)
    {
      // Use ajax.responseText to get the raw response from the server
      alert(ajax.responeText);
    }
  }
  // Open the connection with the open() method
  // (the third parameter is for "asynchronous" requests, meaning that
  //   JavaScript won't pause while the request is processing).
  ajax.open('get', 'requestpage.php', true);
  // Send the request using the send() method
  ajax.send();
}
</script>
<!-- HTML code -->
<button onclick="sendRequestToServer();">Send request!</button>

requestpage.php (выходные данные этой страницы будут возвращены в ваш код JavaScript):

<?php
echo "Hello World!";
?>

В этом примере при нажатии кнопки сервер отправляет HTTP-запрос с запросом requestpage.php , где сервер выполняет некоторый код на стороне сервера и отображает результат. Затем браузер будет принимать данные, полученные с сервера, и использовать их в сценарии - в данном случае alert() it.

Некоторые ресурсы:

Возможно, вы также захотите проверить кодировку JSON, которая является очень распространенным методом отправки объектов и массивов между клиентами и серверами (особенно при использовании AJAX):

(Извините за такой длинный ответ, надеюсь, это помогло)

0 голосов
/ 24 августа 2010

Если вы еще не используете платформу с поддержкой AJAX (например, jQuery), вы можете просто использовать очень легкую XHR реализацию для выполнения HTTP-запроса. Этот запрос может иметь любой ресурс PHP (выполняющий необходимые обновления БД) в качестве места назначения.

Наименьший из известных мне кодов находится здесь: http://dengodekode.dk/artikler/ajax/xmlhttprequest_wrapper.php (датский, извините)

<script type="text/JavaScript">(function(){if(window.XMLHttpRequest)return;var o=null,s,
a=["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0,j=a.length;i<j;s=a[i],i++){try{if(o=new ActiveXObject(s))break}
catch(e){}}window.XMLHttpRequest=o?function(){return new ActiveXObject(s)}:null;o=null})()</script>

И просьба:

var oHttp = new XMLHttpRequest();
oHttp.open("post", "http://www.domain.dk/page.php", true);
oHttp.onreadystatechange = function(){ myCallBack(oHttp) };
oHttp.send("id=123&noget=andet");
0 голосов
/ 24 августа 2010

посмотрите AJAX ... также подумайте об использовании jQuery, в котором есть простая и удобная функция ajax ().

0 голосов
/ 24 августа 2010

Вам понадобится AJAX, там http://www.ajaxf1.com/tutorial/ajax-php.html простое руководство по AJAX с использованием PHP-сервера

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