我的JSON字符串如下所示:
{
"main_object":{
"id":"new",
"formData":"language=nl_NL&getExerciseTitle=3213&question_takeAudio_exerciseWord%5B0%5D=3213&Syllablescounter%5B0%5D=3213S&Syllablescounter%5B1%5D=321"
}
}
正如您所见,我有language=nl_NL
,但我希望这样 - >> "language": "nl_NL
等等,而非中间的&
。
这很可能是导致长字符串的原因 - >
function saveExerciseAjaxCall() {
$("#my_form").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: 'saveJson.php',
type: 'POST',
data: {
id: getUrlParameter('id'),
formData: $('#my_form').serialize()
},
dataType: 'json',
}).done(function(response) {
});
});
}
它所在的部分serialize()
,但说实话:我不知道如何改变这一点,我读了一些关于serializeArray()
的内容,但是会在我的JSON文件中显示它这个 - > "name": "exampleForStackOverflow": "value": "TheValueGiven"
看起来像这样的东西。
那么有没有人有一个如何改变我的AJAX的解决方案,所以它不会成为一个长字符串?但它是否像"language": "nl_NL"
等?
答案 0 :(得分:0)
您可以将urlParameter格式转换为Object,如下所示:
var obj = {
"id": "new",
"formData": "language=nl_NL&getExerciseTitle=3213&question_takeAudio_exerciseWord%5B0%5D=3213&Syllablescounter%5B0%5D=3213S&Syllablescounter%5B1%5D=321"
};
obj.formData = JSON.parse('{"' + decodeURI(obj.formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}');
console.log(obj.formData);
在您的代码中:
function saveExerciseAjaxCall() {
$("#my_form").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: 'saveJson.php',
type: 'POST',
data: {
id: getUrlParameter('id'),
formData: JSON.parse('{"' + decodeURI($('#my_form').serialize()).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
},
dataType: 'json',
}).done(function(response) {
});
});
}
function saveExerciseAjaxCall() {
$("#my_form").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: 'saveJson.php',
type: 'POST',
data: $('#my_form').serialize() + "&id=" + getUrlParameter('id'),
}).done(function(response) {
});
});
}