将值从.php发送到.js

时间:2015-05-16 19:03:07

标签: javascript php

我有一个让我疯狂的小虫子,我已经浏览了整个互联网并找到了许多不同的解决方案,但对我来说却没有。我有 一个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

5 个答案:

答案 0 :(得分:0)

PHP代码未在.js文件中执行。要分配此url变量,您需要通过ajax获取它或将其设置在布局的head部分。

答案 1 :(得分: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";

答案 2 :(得分: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();
});

答案 3 :(得分:0)

请将.js文件更改为.php,然后在脚本标记下输入您的js代码。

答案 4 :(得分: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提供与第一个示例相同的代码,只应用标题内容类型。

<?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();
    });