【问题标题】:Pass object from javascript to Perl dancer framework将对象从 javascript 传递到 Perl 舞者框架
【发布时间】:2015-10-02 15:54:52
【问题描述】:

我遵循ajax 代码将值传递给dancer framework

 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传递对象并在舞者中获取哈希?

【问题讨论】:

    标签: javascript ajax object hash dancer


    【解决方案1】:

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

    我在使用 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'));
    };
    

    我没有去测试这段代码,但它至少应该给你一个很好的起点来完成这个问题。

    祝你的项目好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2011-11-02
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多