无法在JavaScript中回显PHP变量

时间:2018-10-26 04:37:04

标签: javascript php json

我有一个PHP变量,其中包含一个字符串格式的JSON对象。

<?php
$url = "http://ip-api.com/json";
$phpObj = file_get_contents($url);
?>

Javascript:

<script>
var obj = "<?php echo $phpObj; ?>";
</script>

当我尝试在javascript中回显PHP变量时,出现以下错误:

  

未捕获的SyntaxError:无效或意外的令牌。

我尝试使用json_encode,但它给了我同样的错误。

2 个答案:

答案 0 :(得分:0)

无需使用引号(// define a collection of paths and words somewhere List<String> paths = new ArrayList<>(); List<String> words = new ArrayList<>(); try { // presumably you only want to insert so many records int LIMIT = 10000; Class.forName("com.mysql.jdbc.Driver"); connect = DriverManager .getConnection("jdbc:mysql://126.32.3.20/fulltext_ltat?" + "user=root&password=root"); String sql = "INSERT IGNORE INTO fulltext_ltat.indextable VALUES (default, ?, ?);"; preparedStatement = connect.prepareStatement(sql); for (int i=0; i < LIMIT; ++i) { preparedStatement.setString(1, paths.get(i)); preparedStatement.setString(2, word.get(i)); preparedStatement.addBatch(); if (i % 500 == 0) { preparedStatement.executeBatch(); } } // execute remaining batches preparedStatement.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } finally { try { preparedStatement.close(); connect.close(); } catch (SQLException e) { e.printStackTrace(); } } ",因为它已经是 JSON 对象。试试

json_encode

当我获取数据并尝试-

var obj = <?php echo $phpObj; ?>;

我要-

<?php
$phpObj = file_get_contents("http://ip-api.com/json");
?>

<script>
var obj = <?php echo $phpObj; ?>;
console.log(obj);
</script>

在控制台中。

答案 1 :(得分:0)

可以分别通过json_encodejson_decode在PHP和JavaScript之间传递简单数组或对象数组。例如,就您而言,我可以执行以下操作

<?php
  $url = "http://ip-api.com/json";
  $phpObj = file_get_contents($url);
?>
 <script>
  var obj = <?php echo $phpObj; ?>;
 </script>

由于获取的数据是JSON。

但是,这完全取决于您的应用程序。如果$phpObj = file_get_contents($url);返回json,那么我将简单地执行以下操作

<script>
  var obj = <?php echo $phpObj; ?>;
 </script>

如果它是一个返回的对象($phpObj),那么我首先将对象转换为数组,然后将其解析为JSON格式,然后将其回显为JavaScript,如下所示

<script>
  var obj = <?php echo json_encode((array)$phpObj); ?>;
 </script>

如果返回的是数组,则将变量解析为JSON格式,然后将其回显到JavaScript,如下所示

<script>
  var obj = <?php echo json_encode($phpObj); ?>;
 </script>

对于json_decode,例如,如果您要使用file_get_contents($url);返回的值,并假定返回的是JSON,则可以将JSON转换为PHP数组或PHP对象,如下所示:如下所示,

$data_obj = json_decode($phpObj); //Return object not array
$data_arr = json_decode($phpObj,true); //Return array not object