2015-05-08 2 views
0

Итак, у меня есть php-файл на моем сервере, который обрабатывает запросы HTTP POST. Когда он получает почтовый запрос, он запускает скрипт javascript.Запуск javascript внутри php без echo

В настоящее время у меня есть сценарий с эхом '...'; Но проблема в том, что скрипт внутри echo просто отправляет необработанный код в место, где HTTP-сообщение было создано без фактического запуска скрипта.

Есть ли способ запустить сценарий, не повторяя его.

Благодаря

<?php 

define('VERIFY_TOKEN', 'abc'); 
$method = $_SERVER['REQUEST_METHOD']; 

if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' && $_GET['hub_verify_token'] == VERIFY_TOKEN) { 
echo $_GET['hub_challenge']; 
} 

else if ($method == 'POST') { 

echo ' 
<script type="text/javascript" src="parse-1.4.2.min.js"></script> 
<script type="text/javascript">   

     Parse.initialize("ID1", "ID2"); 

     var TestObject = Parse.Object.extend("Test"); 
     var testObject = new TestObject(); 
     testObject.set("key", "post"); 
     testObject.save(); 
</script>'; 
} 
?> 
+0

и как вы знаете, что он не работает? BTW, вы пытаетесь достичь чего-то магического. –

+1

PHP работает на сервере. JS работает в браузере. – Joseph

+0

Код будет запущен. Php создает html во время запроса, конвертирует его в соответствующий html и отправляет обратно. Браузер получает чистый html. Так что не беспокойтесь об этом. Остальное зависит от браузера, который может обрабатывать js, так как это клиентский скрипт. Js будет работать нормально, даже если его эхо. –

ответ

1

вы можете попробовать, как этот

<?php else if ($method == 'POST') {?> 
<script type="text/javascript" src="parse-1.4.2.min.js"></script> 
<script type="text/javascript">   

     Parse.initialize("ID1", "ID2"); 

     var TestObject = Parse.Object.extend("Test"); 
     var testObject = new TestObject(); 
     testObject.set("key", "post"); 
     testObject.save(); 
</script> 
<?php } 
?> 

еще я не думаю, что есть какой-нибудь другой способ

+1

. То же самое происходит с' echo'. –

1

Когда ваш браузер получает ответ, он ожидает надлежащего HTML (и два тега <script> не соответствуют HTML). Попробуйте обернуть свой ответ в каком-то минимальном HTML:

echo ' 
<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="parse-1.4.2.min.js"></script> 
    <script type="text/javascript">   

      Parse.initialize("ID1", "ID2"); 

      var TestObject = Parse.Object.extend("Test"); 
      var testObject = new TestObject(); 
      testObject.set("key", "post"); 
      testObject.save(); 
    </script> 
</head> 
<body> 
</body> 
</html>'; 
} 
0

Оказывается, я не могу этого сделать, так как JavaScript необходим браузеру И поскольку есть только файл php, я не могу заставить его работать с js, поэтому я переключился на все php.

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