আমার এমন একটি দৃশ্য ছিল যেখানে ফর্ম ডেটা তৈরি হওয়ার সময় নেস্টেড জেএসওনকে একটি রৈখিক ফ্যাশনে সিরিয়ালিত করতে হয়েছিল, যেহেতু সার্ভারটি এভাবেই মূল্যবোধ প্রত্যাশা করে। সুতরাং, আমি একটি ছোট পুনরাবৃত্তির ফাংশন লিখেছি যা JSON এর অনুবাদ করে যা এর মতো:
{
"orderPrice":"11",
"cardNumber":"************1234",
"id":"8796191359018",
"accountHolderName":"Raj Pawan",
"expiryMonth":"02",
"expiryYear":"2019",
"issueNumber":null,
"billingAddress":{
"city":"Wonderland",
"code":"8796682911767",
"firstname":"Raj Pawan",
"lastname":"Gumdal",
"line1":"Addr Line 1",
"line2":null,
"state":"US-AS",
"region":{
"isocode":"US-AS"
},
"zip":"76767-6776"
}
}
এর মতো কিছুতে:
{
"orderPrice":"11",
"cardNumber":"************1234",
"id":"8796191359018",
"accountHolderName":"Raj Pawan",
"expiryMonth":"02",
"expiryYear":"2019",
"issueNumber":null,
"billingAddress.city":"Wonderland",
"billingAddress.code":"8796682911767",
"billingAddress.firstname":"Raj Pawan",
"billingAddress.lastname":"Gumdal",
"billingAddress.line1":"Addr Line 1",
"billingAddress.line2":null,
"billingAddress.state":"US-AS",
"billingAddress.region.isocode":"US-AS",
"billingAddress.zip":"76767-6776"
}
সার্ভারটি রূপান্তরিত ফর্ম্যাটে থাকা ফর্ম ডেটা গ্রহণ করবে।
ফাংশনটি এখানে:
function jsonToFormData (inJSON, inTestJSON, inFormData, parentKey) {
// http://stackoverflow.com/a/22783314/260665
// Raj: Converts any nested JSON to formData.
var form_data = inFormData || new FormData();
var testJSON = inTestJSON || {};
for ( var key in inJSON ) {
// 1. If it is a recursion, then key has to be constructed like "parent.child" where parent JSON contains a child JSON
// 2. Perform append data only if the value for key is not a JSON, recurse otherwise!
var constructedKey = key;
if (parentKey) {
constructedKey = parentKey + "." + key;
}
var value = inJSON[key];
if (value && value.constructor === {}.constructor) {
// This is a JSON, we now need to recurse!
jsonToFormData (value, testJSON, form_data, constructedKey);
} else {
form_data.append(constructedKey, inJSON[key]);
testJSON[constructedKey] = inJSON[key];
}
}
return form_data;
}
আবাহন:
var testJSON = {};
var form_data = jsonToFormData (jsonForPost, testJSON);
আমি রূপান্তরিত ফলাফলগুলি দেখতে কেবল টেস্টজেসন ব্যবহার করছি যেহেতু আমি ফর্ম_ডেটার সামগ্রীগুলি বের করতে সক্ষম হব না। আজাক্স পোস্ট কল:
$.ajax({
type: "POST",
url: somePostURL,
data: form_data,
processData : false,
contentType : false,
success: function (data) {
},
error: function (e) {
}
});