Чтение данных формы Json Golang
Я отправляю данные формы в формате JSON и сериализации на сервер golang, используя ajax. Я не могу прочитать эти данные.
я использую kataras/iris
рамки Голанга.
Ниже мой код -
(function ($) {
$.fn.serializeFormJSON = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
})(jQuery);
var Contact = {
sendMessage: function() {
return m.request({
method: "POST",
url: "/send/message",
data: JSON.stringify(jQuery('#contact-form').serializeFormJSON()),
withCredentials: true,
headers: {
'X-CSRF-Token': 'token_here'
}
})
}
}
<!-- Data looks like below, what is sent -->
"{\"first_name\":\"SDSDFSJ\",\"csrf.Token\":\"FjtWs7UFqC4mPlZU\",\"last_name\":\"KJDHKFSDJFH\",\"email\":\"DJFHKSDJFH@KJHFSF.COM\"}"
И я пытаюсь получить данные с сервера, используя следующий код -
// Contact form
type Contact struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Email string `json:"email"`
}
contact := Contact{}
contact.FirstName = ctx.FormValue("first_name")
contact.LastName = ctx.FormValue("last_name")
contact.Email = ctx.FormValue("email")
ctx.Writef("%v", ctx.ReadForm(contact))
У меня все данные пустые, Как получить данные? Я использую https://github.com/kataras/iris golang framework.
1 ответ
Решение
С одной стороны, вы отправляете JSON на сервер, но при получении параметров вы выбираете их как "application/x-www-form-urlencoded", сначала отправьте параметры JSON как JSON, а не как строку, удалите Стринг, т.е.
вместо:
JSON.stringify(jQuery('#contact-form').serializeFormJSON())
делать:
jQuery('#contact-form').serializeFormJSON()
и в вашем файле Go свяжите его с вашим объектом:
var contact []Contact
err := ctx.ReadJSON(&contact)
удачи:)