इस पीएचपी साथ
:
function handlePost() {
$a = $_POST['favArray'];
var_dump($a);
}
..और इस जावास्क्रिप्ट:
function post() {
var a1 = [
{"Item":"109249383",
"Desc":"item1desc",
"Remarks":"item1note"},
{"Item":"298298210",
"Desc":"item2desc",
"Remarks":"item2note"}
];
$.ajax({
type: "POST",
url: "readArray.php",
data: { favArray : a1 },
success: function() {
alert1('ok, sent');
}
});
}
... मैं इस उत्पादन प्राप्त करें:
HTTP/1.1 200 OK
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.10
Date: Wed, 11 Jul 2012 21:04:16 GMT
Content-Length: 315
array(2) {
[0]=>
array(3) {
["Item"]=>
string(9) "109249383"
["Desc"]=>
string(9) "item1desc"
["Remarks"]=>
string(9) "item1note"
}
[1]=>
array(3) {
["Item"]=>
string(9) "298298210"
["Desc"]=>
string(9) "item2desc"
["Remarks"]=>
string(9) "item2note"
}
}
इस मामले में, तार पर डेटा का एन्कोडिंग JSON नहीं है। JQuery के ajax
फ़ंक्शन द्वारा उपयोग किए गए डिफ़ॉल्ट के अनुसार यह 'एप्लिकेशन/एक्स-www-form-urlencoded' है। इस तरह दिखता है:
favArray=%5B%7B%22Item%22%3A%22109249383%22%2C%22Desc%22%3A%22item1desc%22%2C
%22Remarks%22%3A%22item1note%22%7D%2C%7B%22Item%22%3A%22298298210%22%2C%22
Desc%22%3A%22item2desc%22%2C%22Remarks%22%3A%22item2note%22%7D%5D
(एक लाइन में सब)
इसलिए यह भावना पीएचपी भीतर json_decode
कॉल करने के लिए नहीं है - वहाँ कभी नहीं था किसी भी JSON शामिल। PHP स्वचालित रूप से यूआरएल-एन्कोडेड पोस्ट बॉडी को डीकोड करता है।
आप चाहते JSON के साथ सांकेतिक शब्दों में बदलना करने के लिए है, तो आप JSON.stringify()
सीधे उपयोग कर सकते हैं। यह को ब्राउज़र पक्ष पर json2.js
की आवश्यकता हो सकती है। (this answer देखें)
JSON का उपयोग करने के लिए, तो आप ब्राउज़र में कुछ इस तरह की आवश्यकता होगी:
function handlePost() {
header('Content-Type: text/plain; charset="UTF-8"');
$post_body = file_get_contents('php://input');
$a = json_decode($post_body);
var_dump($a);
}
: php तरफ इस तरह
function post_json_encoded() {
$.ajax({
type: "POST",
url: "postArray.php",
contentType: 'application/json', // outbound header
dataType: 'text', // expected response
data: JSON.stringify(a1), // explicitly encode
success: function() {
alert1('ok, json sent');
}
});
}
... और फिर कुछ इस मामले में ऑन-द-वायर प्रतिनिधित्व इस तरह दिखता है:
[{"Item":"109249383","Desc":"item1desc","Remarks":"item1note"},
{"Item":"298298210","Desc":"item2desc","Remarks":"item2note"}]
...और php var_dump उत्पादन यह है:
array(2) {
[0]=>
object(stdClass)#1 (3) {
["Item"]=>
string(9) "109249383"
["Desc"]=>
string(9) "item1desc"
["Remarks"]=>
string(9) "item1note"
}
[1]=>
object(stdClass)#2 (3) {
["Item"]=>
string(9) "298298210"
["Desc"]=>
string(9) "item2desc"
["Remarks"]=>
string(9) "item2note"
}
}
'var_dump ($ fArray)' यकीन है कि यह आबादी किया जा रहा है ठीक से – andrewsi