2015-05-16 3 views
-1

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

PHP:

$_SESSION['url'] = '\''.$url.'\''; 

JS:

var url="<?php echo json_encode($_SESSION['url']) ?>"; 
    var webPage = require('webpage'); 
    var page = webPage.create(); 

    page.open(url, function(status) { 
     console.log(url); 
     phantom.exit(); 
    }); 

Я пытался вывести значение URL-адрес и он пуст, так что я делаю неправильно, имейте в виду файл JS есть. js

+0

Когда вы просматриваете источник в файле .js, что вы видите? –

ответ

0

PHP-код не выполняется в .js-файлах. Чтобы назначить эту переменную url, вам нужно получить ее через ajax или установить ее в разделе заголовка вашего макета.

+0

Хм, что, если JavaScript идет через PHP-компилятор? Конечно, он может ... – dbf

+0

JS-файлы - это статический контент (например, изображения). PHP не интерпретирует изображения, верно? – buzdykg

+0

Вы явно пропустили точку интерпретатора, я спросил, будет ли JavaScript проходить через компилятор PHP. – dbf

0

Я думаю, вы слишком усложняетесь. Давайте попробуем код:

<? 
$url = 'http://example.com'; 
$a = '\''.$url.'\''; 
?> 
var url="<?php echo json_encode($a) ?>";<br> 
var url="<?php echo $url; ?>"; 

возвращение:

var url=""'http:\/\/example.com'""; 
var url="http://example.com"; 
0

Я думаю, что следует удалить все цитаты из вашего кода и обеспечить session_start() функция должна быть самой первой вещью в вашем документе. Перед любыми тегами HTML.

PHP:

$_SESSION['url'] = $url; 

JS:

var url='<?php echo $_SESSION['url'] ?>'; 
var webPage = require('webpage'); 
var page = webPage.create(); 

page.open(url, function(status) { 
    console.log(url); 
    phantom.exit(); 
}); 
+0

По-прежнему нужно начинать и закрывать 'session' – dbf

0

Пожалуйста, измените свой .js файл .php, а затем в тег сценария поместить ваш код JS.

0

Вы должны позволить PHP интерпретировать значение session, это можно сделать различными способами.

Прежде всего, вы можете просто установить $url без кавычек

<?php 
    session_start(); 
    // no idea why you encode as JSON. 
    $_SESSION['url'] = json_encode($url); 
    session_write_close(); 
?> 

Один использует script тег некоторого .php файла, например, файл index.php.

<script> 
<?php 
    session_start(); 
    $session_url = $_SESSION['url']; 
    session_write_close(); 
?> 
var url='<?php echo $session_url ?>', 
    webPage = require('webpage'), 
    page = webPage.create(); 

    page.open(url, function(status) { 
     console.log(url); 
     phantom.exit(); 
    }); 
</script> 

Второй вариант генерирует javascript как источник, например.

<script src="javascript.php"></script> 

Где javascript.php поставляет тот же код, как и в первом примере, лишь применяя заголовка Content-Type.

<?php 
    header('Content-Type: application/javascript'); 
    session_start(); 
    $session_url = $_SESSION['url']; 
    session_write_close(); 
?> 
var url='<?php echo $session_url ?>', 
    webPage = require('webpage'), 
    page = webPage.create(); 

    page.open(url, function(status) { 
     console.log(url); 
     phantom.exit(); 
    }); 
Смежные вопросы