eval()을 사용하여 JSON의 일부인 JavaScript 함수를 실행하고 싶지만 분명히 올바르게 할 수는 없으며 정확히 어디에서 실수인지 알아낼 수 없습니다 /에스. 난 그냥 시도를 들어, 두 개의 매우 간단한 파일을 사용하고 있습니다 - 첫 번째의 index.php이며이에있다 : simpleformSubmi.phpeval()을 사용하여 JSON에서 JavaScript 함수를 실행
<!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>
와 두 번째는 다음과 같습니다
<?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)를 실행 한 후였다. 얻고 기 위하여 그러나 대신에 나는 실수를 얻고, 방화범 고리에있는 콘솔은 "괄호 안의"에 오류 "실종"을 보여준다. 그래서 문제는 올바른 JS 함수를 이런 식으로 보내고 올바르게 실행하는 것입니다.
감사 Leron
* "JSON에는 'eval()'"*을 사용하여 JSON에서 JavaScript 함수를 실행합니다. [JSON에는 함수가 없습니다. 전혀.] (http://json.org) 서버 응답에 함수를 포함 시키면 JSON이 아니라 JavaScript 코드가 반환됩니다. 나는 PHP의'json_encode'가 그들을 통과시킬 것이라고 생각하지 않는다. (그것은 * 모르지만 * 모르지만 * 모르겠다.) –
'echo json_encode ($ res)'를 제거/주석 처리하고'echo json_encode ($ arr)'을'echo $ arr'으로 변경하면 어떻게됩니까? – Stefan
전체 응답 : function() {alert ("Hi"); } - 일반 HTML로 나타납니다. – Leron