首页 > 解决方案 > 在 javascript 中传递多个变量的更简洁的方法

问题描述

我将 json 结构中的以下变量传递给我的后端:

<a href="#;" class="match-item"

   data-reviewqueueid="{{ item.pk }}"
   data-useremail="{{ user.email}}"
   data-instanceid="{{ item.item_id }}"
   data-tracktitleid="{{ item.tracktitle_id }}"

   data-contenttype="{{ search_item.content_type_id }}"
   data-titleimdbid="{{ search_item.imdb_id }}"
   data-tvseriesimdbid="{{ search_item.imdb_series_id|default:'' }}"
   data-titlename="{{ search_item.name }}"
   data-titlereleaseyear="{{ search_item.release_year }}"
   data-ispartoftitle=""
   data-shouldbetvseries=""
   data-matchedfromimdb="{% if search_item.imdb_id and search_item.content_type_id != 'TV Series' %}true{% else %}{% endif %}"
   data-tvseriesname="{{ search_item.imdb_series.name }}"
   data-collectionepisodenumber=""
   data-collectionseasonnumber=""
   data-tvseriesreleaseyear=""
   data-collectionname="">
    Match
</a>

在javascript中:

var data = new Object();

data.TVSeriesReleaseYear = $(this).data('tvseriesreleaseyear') || null;
data.CollectionName = $(this).data('collectionname') || null;
# ... etc ...
var jsonData = JSON.stringify(data)

$.post('{% url submit %}', jsonData, function () {
    ...
});

每个“项目”都是一个搜索结果对象。是否有更清晰的方法将此数据传递到后端,或者这是建议的方式?

标签: javascriptjson

解决方案


您可以data()不使用参数将所有数据属性组合为一个对象

console.log($('a.match-item').data())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#;" class="match-item"
   data-reviewqueueid="1"
   data-useremail="foo@bar.com"
   data-instanceid="2"
   data-tracktitleid="3"
   data-null="null"
   data-true="true"
>
    Match
</a>


推荐阅读