javascript - 在 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 () {
...
});
每个“项目”都是一个搜索结果对象。是否有更清晰的方法将此数据传递到后端,或者这是建议的方式?
解决方案
您可以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>
推荐阅读
- excel - Excel VBA 'On Error Resume Next' 导致重命名表标题出现问题
- node.js - 使用nodejs来回发送文件
- asp.net-core - 如何使用自定义异常中间件捕获 ASP.NET Core (3.1) URL 解析错误?
- bitbucket - Git - 向旧提交添加更多更改
- java - Spring webflux 何时在平面地图上使用地图
- python - 如何检查在 uWSGI 服务器下工作的两个进程的状态?
- php - PHP将现有的ZIP文件导入数据库
- java - 需要一个 Java 方法的解决方案,它返回一个字符串值,只在 JVM 中执行 n 个线程
- java - 如何在 RecyclerView 中添加搜索过滤器来过滤解析的 JSON 数据?已编辑
- c++ - std::array begin() 和 data() 之间的区别