<button type="button" id="okButton" onclick="funk()" value="okButton">Order now </button> <script type="text/javascript"> function funk(){ alert("asdasd"); <?php echo "asdasda";?> } </script>
Когда кнопка нажата, я хочу выполнить php-код (в этот момент для эха asadasda)
function echoHello() {alert ("<?php funkx(); ?>");}
Этот код должен дать вам всплывающее окно
Вы можете использовать http://phpjs.org/ http://locutus.io/php/, он добавляет кучу функциональности PHP в javascript, но если это просто эхо, а скрипт находится в php-файле, вы можете что-то сделать как это:
alert("<?php echo "asdasda";?>");
не беспокойтесь о переменчивом использовании двойных кавычек, PHP сделает это до того, как браузер увидит его.
как и для использования ajax, проще всего использовать библиотеку, такую как jQuery . С этим вы можете сделать:
$.ajax({ url: 'test.php', success: function(data) { $('.result').html(data); } });
и test.php будет:
<?php echo 'asdasda'; ?>
он будет писать содержимое test.php любому элементу, имеющему класс result
.
Взаимодействие Javascript и PHP
Мы все выросли, зная, что Javascript работает на стороне клиента (то есть в браузере), а PHP – это серверный инструмент (то есть сервер). ОЧИСТНО, что оба просто не могут взаимодействовать.
Но – хорошие новости; его можно заставить работать, и вот как.
Цель состоит в том, чтобы получить некоторую динамическую информацию (например, элементы конфигурации сервера) с сервера в среду Javascript, чтобы ее можно было использовать при необходимости – обычно это подразумевает модификацию DHTML в презентации.
Во-первых, чтобы пояснить использование DHTML, я приведу этот пример DHTML:
<script type="text/javascript"> function updateContent() { var frameObj = document.getElementById("frameContent"); var y = (frameObj.contentWindow || frameObj.contentDocument); if (y.document) y = y.document; y.body.style.backgroundColor="red"; // demonstration of failure to alter the display // create a default, simplistic alteration usinga fixed string. var textMsg = 'Say good night Gracy'; y.write(textMsg); y.body.style.backgroundColor="#00ee00"; // visual confirmation that the updateContent() was effective } </script>
Предполагая, что у нас есть html-файл с ID = "frameContent" где-то, тогда мы можем изменить отображение с помощью простого <body onload = "updateContent ()">
Golly gee; нам не нужен PHP, чтобы делать это сейчас! Но это создает структуру для применения PHP-контента.
Мы меняем рассматриваемую веб-страницу на тип PHTML, чтобы разрешить серверу PHP доступ к контенту:
**foo.html becomes foo.phtml**
и мы добавим в начало этой страницы. Мы также вызываем загрузку php-данных в глобальные переменные для последующего доступа – вот так:
<?php global $msg1, $msg2, $textMsgPHP; function getContent($filename) { if ($theData = file_get_contents($filename, FALSE)) { return "$theData"; } else { echo "FAILED!"; } } function returnContent($filename) { if ( $theData = getContent($filename) ) { // this works ONLY if $theData is one linear line (ie remove all \n) $textPHP = trim(preg_replace('/\r\n|\r|\n/', '', $theData)); return "$textPHP"; } else { echo '<span class="ERR">Error opening source file :(\n</span>'; # $filename!\n"; } } // preload the dynamic contents now for use later in the javascript (somewhere) $msg1 = returnContent('dummy_frame_data.txt'); $msg2 = returnContent('dummy_frame_data_0.txt'); $textMsgPHP = returnContent('dummy_frame_data_1.txt'); ?>
Теперь наши javascripts могут перейти к глобальным глобалиям PHP следующим образом:
// через accessig globals var textMsg = '<? php global $ textMsgPHP; echo "$ textMsgPHP"; ? > ';
В javascript замените
var textMsg = «Спокойной ночи»;
с: // использованием php returnContent ()
var textMsg = '<? php $ msgX = returnContent ('dummy_div_data_3.txt'); echo "$ msgX"? > ';
Резюме:
Должно быть разрешено: вызывать updateContent () с именем файла и использовать его через onClick () вместо onLoad ()
Пример может быть представлен в Sample_Dynamic_Frame.zip для вашего осмотра, но не нашел средства для его прикрепления
Вы не можете запускать PHP с помощью javascript. JavaScript – это клиентская технология (работает в браузере пользователей), а PHP – это технология на стороне сервера (выполняется на сервере).
Если вы хотите сделать это, вам нужно сделать запрос ajax на PHP-скрипт и вернуть результаты, которые вы ищете.
почему ты хочешь сделать это?
Если вы просто хотите эхо-сообщение от PHP в определенном месте на странице, когда пользователь нажимает кнопку, вы можете сделать что-то вроде этого:
<button type="button" id="okButton" onclick="funk()" value="okButton">Order now</button> <div id="resultMsg"></div> <script type="text/javascript"> function funk(){ alert("asdasd"); document.getElementById('resultMsg').innerHTML('<?php echo "asdasda";?>'); } </script>
Однако, предполагая, что ваш скрипт должен выполнять некоторую обработку на стороне сервера, например, добавление элемента в корзину, вам может понравиться проверить http://api.jquery.com/load/ jQuery – использовать jQuery для загрузки пути к php, который выполняет обработку. В вашем примере вы можете сделать:
<button type="button" id="okButton" onclick="funk()" value="okButton">Order now</button> <div id="resultMsg"></div> <script type="text/javascript"> function funk(){ alert("asdasd"); $('#resultMsg').load('path/to/php/script/order_item.php'); } </script>
Это запускает php-скрипт и загружает любое сообщение, которое оно возвращает в <div id="resultMsg">
.
order_item.php добавит элемент в корзину и просто откликнется на любое сообщение, которое вы хотите отобразить. Чтобы получить пример работы, этого будет достаточно, как order_item.php:
<?php // do adding to cart stuff here echo 'Added to cart'; ?>
Для этого вам нужно будет включить jQuery на свою страницу, добавив это в свой <head>
:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
Может быть так:
<?php if($_SERVER['REQUEST_METHOD']=="POST") { echo 'asdasda'; } ?> <form method="post"> <button type="submit" id="okButton">Order now</button> </form>
Если вы не хотите включать библиотеку jquery, вы можете просто сделать следующее
a) ad iframe, размер 0px, чтобы он не был виден, href пуст
b) выполнить это в вашей js-кодовой функции
window.frames['iframename'].location.replace('http://....your.php');
Это выполнит скрипт php, и вы можете, например, сделать обновление базы данных …
поместите ваш php в скрытый div и вызовите его с помощью javascript
php часть
<div id="mybox" style="visibility:hidden;"> some php here </div>
часть javascript
var myfield = document.getElementById("mybox"); myfield.visibility = 'visible';
теперь вы можете делать все с моим полем …