php - 使用 eval() 执行 JSON 格式的 JavaScript 函数

标签 php javascript json

我想使用 eval() 执行属于 JSON 一部分的任何 JavaScript 函数,但显然我不能正确执行,并且无法弄清楚错误到底在哪里。我正在使用两个非常简单的文件,只是为了尝试 - 第一个是index.php,它是:

<!DOCTYPE html>
<html>
<head>
<title>Simple form sending and receiving a JSON object to/from PHP</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){ 
  var data = 
  { 
    "sales": [ 
      { "firstname" : "John", "lastname" : "Brown" },
      { "firstname" : "Marc", "lastname" : "Johnson" }
    ] // end of sales array
  }
  var dataString = JSON.stringify(data);

  $.post('simpleformSubmi.php', { data: dataString}, showResult, "text");
});

function showResult(res)
{
    var data = eval('(' + res + ')');

  $("#fullresponse").html("Full response: " +data);
}
</script>
<div id="fullresponse"></div>
</head>
<body>

第二个是 simpleformSubmi.php :

<?php

$logFile = 'logFile';
$res = json_decode(stripslashes($_POST['data']), true);
$arr = "function(){alert('Hi')}";
echo json_encode($res);
echo json_encode($arr);

所以我期望的是执行 echo json_encode($arr); 之后获取并发出警报,但我得到了一个错误,并且在 Firebug 中控制台显示错误“括号中缺少 )”。所以问题是 - 如何以这种方式发送有效的 JS 函数并正确执行它?

谢谢 勒隆

最佳答案

为什么你要 json_encodeing $arr.您可以在 JavaScript 中将其作为字符串 echo $arreval('(' + res + ')()') 返回(注意 ( ) 在 JS 中执行该函数)。您可能需要删除 echo json_encode($res) 才能使其暂时正常工作。

关于php - 使用 eval() 执行 JSON 格式的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9906186/

相关文章:

javascript - 从上一页表单数据填写表单字段

javascript - 将 php 数组作为 json 元素传递,并在隐藏输入中使用 json_encode

c# - 如何将 C# 日期时间变量转换为 NSDate?

java - 如何替换 jsonNode 或 ObjectNode 中的 json 节点

php - 为什么我的 php 函数不返回 json 格式的值?

php - 本地主机 ubuntu xampp "There was an SQL error: No database selected"

php - 随着目标集的增长,循环哈希能否保持一致?

php - 是否有用于此的 PHP namespace 快捷方式?

php - 根据比较结果弹出

javascript - 如何在 NodeJS 中测量 http.ClientRequest 响应时间?