2013-07-22 5 views
1

У меня есть это PHP и JS код:Использование JavaScript в PHP

<script type="text/javascript"> 
function StartScript(script) 
{ 
    <?php require("StartScript.php"); ?> 
} 
</script> 

<a href="#" onclick="StartScript(scriptname);">Start</a> 

Как я могу получить «сценарий» из яваскрипта функции на конец файла PHP?

, например, вместо:

<?php require("StartScript.php"); ?> 

иметь:

<?php require("StartScript.php?script=scriptname"); ?> 
+2

Что такое 'scriptname'? Вы знаете разницу между серверной и клиентской технологией? –

+0

Вы не можете напрямую звонить PHP из JS. Вам нужно заглянуть в технику Call AJAX, чтобы делать то, что делают yoy. – marteljn

ответ

1

Полная выписка (при условии, что StartScript.php на том же уровне текущей страницы, в противном случае добавить абсолютный путь):

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 

<script type="text/javascript"> 
    function StartScript(script) { 
     jQuery.getScript('StartScript.php?script=' + escape(script)); 
    } 
</script> 

Это будет вызывать StartScript.php с параметром script. StartScript.php сгенерирует код JavaScript, который будет выполнен в браузере клиента.

Ссылка: http://api.jquery.com/jQuery.getScript/

+0

Итак, где я помещаю этот первый бит кода? –

+0

на первый бит кода, откуда он получает сценарий? Script = scriptname? –

+0

Попробуйте второй, первый для справки. –

1

Это невозможно писать код на стороне сервера (PHP) с кода на стороне клиента (JavaScript). Это не сработает, если вы не используете что-то вроде Ajax.

+0

им не слишком хорошо с Ajax, вы знаете, как лучше всего обойти это? –

+0

Вы можете загрузить PHP-скрипт в HTML с помощью jQuery/Ajax. Просто Google это, есть тысячи полезных примеров. – Pieter

+0

@CharlieFord Если вы хотите, чтобы клиентский код вызывал его, на самом деле его нет ... может быть, появилось новое окно на 'StartScript.php'? – Izkata

0

Может быть, я неправильно понял ваш вопрос, но это, кажется, довольно легко ... Я хотел бы включить все JS в файле PHP, так что HTML сторона вещей будет иметь только ....

<? 
$script = "Page1"; 
include("StartScript.php"); 
?> 

и PHP будет ...

<? if ($script == "Page1"){ ?> 
function StartScript(script) 
{ 
    alert("IN"); 
} 
</script> 
<? } ?> 
0

проблема заключается в том, что вы путаете клиента (JS) и сервера (PHP). PHP выполняется на сервере и создает некоторый HTML, который отправляется в браузер («клиент»). Браузеры не могут запускать PHP, потому что это серверный язык.

Вы должны оценить, какое именно взаимодействие требуется между клиентом и сервером. Например, если вам просто нужно выполнить некоторые PHP, чтобы передать данные в JavaScript, вы можете создать объект JavaScript:

<script type="text/javascript"> 
    <?php // include script that gives you back some data, e.g.: ?>  
    <?php $somePhpData = array('red', 'yellow', 'blue'); ?> 
    <?php $jsonData = json_encode($somePhpData); ?> 
    var dataFromPhpScript = <?php echo $jsonData; ?> 
    // do something with the data 
</script> 

В противном случае, если вам действительно нужно JavaScript для запуска PHP-скрипт работает, вы по существу делая AJAX. Вероятно, вам понадобится какой-то REST API. Идея заключается в том, что вы выставляете URL-адрес PHP, который может вызывать JavaScript:

<script type="text/javascript">  
    jQuery(document).ready(function() {  
     function startScript(scriptName, success) {   
       $.get('/path/StartScript.php?script-name=' + scriptName) 
       .done(success) 
       .fail(fail); 
     }   
     startScript('name-of-php-script', function(data) { 
      // trigger some JavaScript that relies on the output of the PHP script 
     });   
    }); 
</script> 
Смежные вопросы