eval()を使用してJSONの一部であるJavaScript関数を実行したいのですが、間違いなく正確にどこに間違いがあるのかわかりません/ s。私はちょうどしようとするために、2つの非常に簡単なファイルを使用しています - 最初は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>
2つ目は、次のとおりです。
<?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関数を送信し、それを正しく実行する方法です。
おかげ 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