使用eval()在JSON中执行JavaScript函数

Ler*_*ica 0 javascript php json

我想使用eval()执行作为JSON一部分的任何JavaScript函数,但显然我做不到,并且无法确定错误/ s的确切位置.我正在使用两个非常简单的文件,只是为了尝试 - 第一个是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>
Run Code Online (Sandbox Code Playgroud)

第二个是simpleformSubmi.php:

<?php

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

所以我期望在执行echo json_encode($ arr)之后; 得到并警告,但我得到一个错误,并在Firebug控制台显示错误"缺少"在parenthetica".所以问题是 - 如何以这种方式发送有效的JS函数并正确执行它?

谢谢Leron

bad*_*wym 5

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