gpt4 book ai didi

javascript - 将对象从 javascript 传递到 Perl dancer 框架

转载 作者:行者123 更新时间:2023-12-02 15:58:31 25 4
gpt4 key购买 nike

我有以下ajax代码将值传递给dancer框架

 BookSave: function(data) {
### data is an object that contain more than one key value pair
var book = Book.code;
$.ajax ({
type: "GET",
url : 'textbook/save/' + book + '/' + data,
success: function(data) {
if(data.status == 1) {
alert("success");
} else {
alert("fail");
}
},
});
},

在舞者中:

any [ 'ajax', 'get' ] => '/save/:book/:data' => sub {
set serializer => 'JSON';
my $book = params->{book};
my $data = params->{data}; ## This I am getting as object object instead of hash
};

有什么方法可以从js传递对象并在dancer中获取哈希值吗?

最佳答案

首先,考虑使用 http PUT 或 POST 动词,而不是 GET。这样做不仅在语义上更正确,它还允许您在 http 主体中包含更复杂的对象,例如您的“数据”哈希(根据我下面的评论进行序列化)。

我在 Dancer 的原生 AJAXy 方法方面取得了有限的成功,而且还有一个错误导致某些版本的 Firefox 出现问题。因此,我序列化然后反序列化 JSON 对象。

建议的更改(请注意,我还建议更改您的路线):

$.ajax ({
type: "PUT",
url : '/textbook/' + book,
data: {
myhash : JSON.stringify(data)
},
dataType: 'json',
contentType: 'application/json',
success: function (response) {
if (response.status == 1) {
alert("success")
} else {
alert("fail")
}
}
})

并且您的 Perl Dancer 代码更改如下:

any [ 'ajax', 'put' ] => '/textbook/:book' => sub {
set serializer => 'JSON';
my $book = param('book');
my $data = from_json(param('myhash'));
};

我没有测试这段代码,但它至少应该为您提供一个很好的起点来完成解决这个问题。

祝您的项目顺利!

关于javascript - 将对象从 javascript 传递到 Perl dancer 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31399389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com