これは通常の場合とは逆のことだと思います。 PHPのデータをJSONでStringとして受け取って、jQueryでデータをエンコードしたいと考えています。jQuery JSONデータをPHPでJSONとして受け取る
現在、PHPは自動的にデータを配列にデコードします。
PHP 5.3.10(ホストされています)。
<?php
if(isset($_REQUEST['arr']))
{
$arr = $_REQUEST['arr'];
$obj = $_REQUEST['obj'];
$res = "arr is of type ".gettype($arr).", var_export (".var_export($arr, true).")\n"
. "obj is of type ".gettype($obj).", var_export (".var_export($obj, true).")\n";
die(json_encode($res));
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script>
<script>
$(document).ready(function(){
$("#csubmit").click(function() {
var arr = new Array("one","two");
var obj = { "one":1, "two":2 };
var data ={ "arr" :arr, "obj" : obj };
$.ajax({
type: "POST",
cache: false,
data: data,
dataType : "json",
complete : function(jqXHR, textStatus) {
if(textStatus != 'success')
alert("Network error ("+textStatus+"/"+jqXHR.responseText+")");
}
}).done(function(data) {
alert("Got back:("+data+")");
});
return false;
});
});
</script>
</head>
<body>
<form><input type="submit" value="click" id="csubmit"></form>
</body>
</html>
結果は、私はそれはいくつかの文字列になりたいにも関わらず、常に
Got back:(arr is of type array, var_export (array (
0 => 'one',
1 => 'two',
))
obj is of type array, var_export (array (
'one' => '1',
'two' => '2',
))
)
です。
良い点。データ型jsonがJSONとして配列を送信するようにjQueryを作成していないようです。 – anttir
私は当初もそれに戸惑っていましたが、 '' '' dataType'''はサーバーから返ってくるものです。あなたは、 '' 'data:JSON.stringify(data)、processData:false、contentType:" application/json "' ''というオプションを$ .ajax()に渡すことで、JSONを期待通りに送ることができます。それはPHPをキャッチするのは厄介です – Deebster