js の配列にキーから値への値を含めることができないことを今理解したので、配列を js から php に渡したり戻したりするオプションを探していました。それに関する情報を検索すると、jsonオプションが見つかりました。しかし、私の場合 json2.js にプラグインを追加しない限り、js は完全にサポートされていないことがわかります。$.post
うまく機能 するコードと機能しないコードが 2 つあり $.ajax
ます。$.ajax
テストできる完全なコードがあるので、なぜ機能しないのか教えていただければ幸いです。json2.js はhere .thx
$.ajax
コードからのものです。
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "phpfile.php",
data: "{ data : dataString }",
dataType: "json",
success: function (res) {
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
},
error: alert ('there was problem with ajax');
});
*
$.post
コード:
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
});
html コード:
<html>
<head>
<title>Json Test</title>
<SCRIPT src="jquery-1.7.2.min.js"></SCRIPT>
<SCRIPT src="json2.js"></SCRIPT>
<script>
$(document).ready(function(){
var data = new Object();
data.hello = "Hello";
data.world = 'World';
data.worked = " it worked ";
data.somebool = true;
data.array = new Array("he\"ll\"o", '"World"');
alert (data.hello);
var dataString = JSON.stringify(data);
alert(dataString);
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
});
});
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>
phpコード:
<?php
$res = json_decode($_REQUEST['data'], true);
$res["php_message"] = "I am PHP";
echo json_encode($res);
?>