2010-11-13 6 views
5

Я хочу знать, можно ли вызвать функцию php внутри javascript только и только тогда, когда условие истинно. НапримерВызов функции PHP в Javascript

<script type="text/javascript"> 
if (foo==bar) 
{ 
phpFunction(); call the php function 
} 
</script> 

Есть ли какие-либо средства для этого. Если да, дайте мне знать. Спасибо

+2

Возможный дубликат [Javascript и функции PHP] (http://stackoverflow.com/questions/221396/javascript-and-php-functions) –

ответ

2

Функция PHP не может быть вызвана так, как вы показали выше. Однако вы можете вызвать PHP-скрипт с использованием AJAX, код показан ниже. Также вы можете найти простой пример here. Дайте мне знать, если вам нужна дополнительная разъяснения

Использование Jquery

<script type="text/javascript" src="./jquery-1.4.2.js"></script> 
<script type="text/javascript"> 
function compute() { 
    var params="session=123"; 
    $.post('myphpscript.php',params,function(data){ 
      alert(data);//for testing if data is being fetched 
      var myObject = eval('(' + data + ')'); 
      document.getElementById("result").value=myObject(addend_1,addend_2); 
     }); 
} 
</script> 

Barebones Javascript Альтернативные

<script type="text/javascript"> 

    function compute() { 
     var params="session=123" 
     var xmlHttp; 
     var addend_1=document.getElementById("par_1").value; 
     var addend_2=document.getElementById("par_2").value; 

     try 
     { 
      xmlHttp = new XMLHttpRequest(); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch (e) 
      { 
       try 
       { 
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       catch (e) 
       { 
        alert("No Ajax for YOU!"); 
        return false; 
       } 
      } 
     } 
     xmlHttp.onreadystatechange = function() 
     { 
      if (xmlHttp.readyState == 4) { 
       ret_value=xmlHttp.responseText; 
       var myObject = eval('(' + ret_value + ')'); 
       document.getElementById("result").value=myObject(addend_1,addend_2); 
      } 
     }  
     xmlHttp.open("POST", "http://yoururl/getjs.php", true); 
     xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     xmlHttp.setRequestHeader("Content-length", params.length); 
     xmlHttp.setRequestHeader("Connection", "close"); 
     xmlHttp.send(params); 
    } 
    </script> 
+0

Мне действительно нужно порекомендовать библиотеку jQuery для Ajax. Это просто делает вещи смехотворно проще и беззаботно. –

+0

Абсолютно, однако каждый новичок должен начать разбираться, поэтому мое использование barebones javascript – Philar

+0

Спасибо за помощь. Еще одна вещь может показать мне простой пример jQuery.ajax. Я хочу знать его основную реализацию. –

2

Нет, это невозможно. PHP код работает до того (на стороне сервера) JavaScript (на стороне клиента)

4

PHP является на стороне сервера и Javascript является клиент так не очень (да, я знаю, что есть какой-то стороне сервера JS). Что вы можете сделать, это использовать Ajax и сделать вызов страницы PHP, чтобы получить некоторые результаты.

+1

Вот статья о том, как запустить Ajax и запустить с помощью jQuery http: // articles.sitepoint.com/article/ajax-jquery – Treffynnon

+0

Wow я сказал точно так же через несколько минут после вас :) –

1

Другие ответы правильно.

Однако есть библиотека, XAJAX, которая помогает имитировать акт вызова функции PHP из JavaScript, используя AJAX и специально разработанную библиотеку PHP.

Это немного сложно, и было бы намного легче научиться использовать $ .get и $ .post в jQuery, так как они лучше разработаны и проще, и как только вы узнаете, как они работают, вы выиграли «Я чувствую необходимость прямого вызова PHP из JavaScript.

0

PHP всегда работает до загрузки страницы. JavaScript всегда запускается после загрузки страницы. Они никогда не бегают в тандеме.

Ближайшим решением является использование AJAX или переадресации браузера для вызова другого .php-файла с сервера.

Смежные вопросы