Django 仿ajax传递数据(Django十)
之前用form表单传递数据,没有遇到任何问题
具体见:https://blog.csdn.net/qq_38175040/article/details/104867747
然后现在我想用ajax传递少量数据,因为在实际情况中,我们传递数据不可能全是用form,比如说展示数据库多条数据,我选择一条删除,这时我只要传递有限的几条数据到后端(比如说商品的id,然后数据库删除该条记录),最后前端进行div的局部刷新。
但是我找了网上很多ajax的相关写法,进行尝试,在我这里都会出现问题,最后在问答社区提问,有位大佬给我提供了一种写法。
<div class="wrapper">
{% for problem in problems %}
<div class="ds-comment-body">
<h3 id="pro_id">{{problem.pro_id}}</h3>
<a title="设计达人" target="_blank" class="user-name" >用户ID:</a>
<a title="设计达人" target="_blank" class="user-name" >{{ problem.user_id }}</a> <br>
<a title="设计达人" target="_blank" class="user-name">用户名:</a>
<a title="设计达人" target="_blank" class="user-name" >{{ problem.user_name }}</a> <br>
<a href="mailto:{{ problem.mail }}">邮箱地址:{{ problem.mail }}</a>
<p>{{ problem.theme }}</p>
<p>{{ problem.content }}</p>
<p>.............................................................................以下是评论区................................................................................</p>
<div class="test">
{% for an in ans %}
{% ifequal an.to_pro_id problem.pro_id %}
<div lang="en-US" class="gitment-container gitment-comments-container">
<ul class="gitment-comments-list">
<li class="gitment-comment">
<div class="gitment-comment-main">
<div class="gitment-comment-header">
<a class="user-name">
{{an.user_name}}
</a>
</div>
<div class="gitment-comment-body gitment-markdown">
<p>{{an.ans_content}}</p>
</div>
</div>
</li>
</ul>
</div>
{% endifequal %}
{% endfor %}
<div lang="en-US" class="gitment-container gitment-editor-container">
<div class="gitment-editor-main">
<div class="gitment-editor-body">
<div class="gitment-editor-write-field">
<textarea placeholder="说点什么吧*" title="Login to Comment" class="for_js"></textarea>
</div>
<div class="gitment-editor-preview-field gitment-hidden">
<div class="gitment-editor-preview gitment-markdown"></div>
</div>
</div>
</div>
<div class="gitment-editor-footer">
<button class="gitment-editor-submit" type="submit" id="btn" onclick="f1(this)">发表</button>
</div>
</div>
</div>
</div>
<br>
{% endfor %}
</div>
以上 的是我的全部div,我是用for循环创建的,因此所有的button,textarea都有相同的class属性
相当于创建了几条并列的text area标签以及多个并列的button
那么我想要点击第一个button传递第一个areatext的内容到后端,点击第二个button传递第二个areatext的内容到后端怎么做呢
详细代码如下:
<script>
function f1(tag) {
var index=-1;
var a = document.getElementsByClassName('gitment-editor-submit');
var b = document.getElementsByClassName('for_js');
for (var i = 0, len =a.length; i < len; i++) {
var j = i + 1;
if (tag == a[i]) {
index = i;
//alert(b[index].value)
var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象
httpRequest.open('POST', '/ans_ajax/', true); //第二步:打开连接
httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)
httpRequest.send('text='+b[index].value+"&pro_id="+j);//发送请求 将情头体写在send中
httpRequest.onreadystatechange = function () {//请求后的回调接口,可将请求成功后要执行的程序写在其中
if (httpRequest.readyState == 4 && httpRequest.status == 200) {//验证请求是否发送成功
var json = httpRequest.responseText;//获取到服务端返回的数据
//console.log(json);
//alert(json)
location.reload();
b[index].value = '';
}
else if(httpRequest.readyState ==0 && httpRequest.status==404){
alert("错误");
}
};
}
}
}
</script>
a,b根据class名获取页面所有的button和areatext,这边的解释详见:https://blog.csdn.net/qq_38175040/article/details/105385858
httpRequest.onreadystatechange = function () {//请求后的回调接口,可将请求成功后要执行的程序写在其中
if (httpRequest.readyState == 4 && httpRequest.status == 200) {//验证请求是否发送成功
var json = httpRequest.responseText;//获取到服务端返回的数据
//console.log(json);
//alert(json)
location.reload();
b[index].value = '';
}
else if(httpRequest.readyState ==0 && httpRequest.status==404){
alert("错误");
}
};
这部分代码接受view方法返回的json数据,我们在此不需要json数据,直接用 location.reload(); 刷新当前整个页面
这样我们对数据库的变动就会展现,因为是刷新整个页面,所以耗费资源较多,但还是实现了需求(点击button将teatarea的内容传递至数据库并刷新页面,展现新的数据列表)
ok,这不就行了吗,要的就是这个效果
Django 仿ajax传递数据(Django十)的更多相关文章
- Django中Ajax提交数据的CSRF问题
错误信息: Forbidden (CSRF token missing or incorrect.): 什么是CSRF: django为用户实现防止跨站请求伪造的功能,通过中间件 django.mid ...
- PHP前端$.ajax传递数据到后台
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Django:(4)Django和Ajax
向服务器发送请求的途径: 1. 浏览器地址栏,默认get请求 2. form表单: get请求: post请求 3. a标签,默认get请求 4. Ajax:get请求:post请求 Ajax的特点( ...
- 小笔记(一):ajax传递数组及将ajax返回数据赋值
当使用ajax传递数据时,有可能传递多个数据,这是使用以下方法传递数据就会显得数据过多且混杂 $.ajax({ type:'post', url:url, data:{data:data,conten ...
- thinkjs学习-this.assign传递数据和ajax调用后台接口
在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...
- 使用ajax请求数据时的几种做法
在进行前后端交互的时候,一般前端使用ajax向后端发送数据,后端根据发送的数据来返回数据,前端将这些数据接收并进行相应的处理 以下是在日常工作中总结的几点使用ajax传递数据时的情况: 1.在本页面( ...
- Django:之传递数据给JS、Ajax和Ajax CSRF认证
Django传递数据给JS 有时候我们想把一个list或者dict传递给javascript,处理后显示到网页上,比如要用js进行可视化到数据. 请注意:如果是不处理,直接显示在网页上,用Django ...
- Python Django Ajax 传递列表数据
function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...
- Django传递数据给JS
这里讲述两种方法: 一,页面加载完成后,在页面上操作,在页面上通过 ajax 方法得到新的数据(再向服务器发送一次请求)并显示在网页上,这种情况适用于页面不刷新的情况下,动态加载一些内容.比如用户输入 ...
随机推荐
- Android java.lang.SecurityException: Permission Denial
报错: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE ...
- PHP基础之常量与变量
1.变量:用来存储信息的空间大小 $var 2.常量:定义之后不可以更改,标识符,并且给其赋值,常量是全局,在整个页面中均可使用,常量一般有英文字母.下划线.数字组成,开头不能是数字和$ 使用defi ...
- Excel数据分析 --数据透析表
数据透析表主要用于各种数据总汇,对各项数据指标进行分类统计 实例分析 如下所示:是一份销售流水数据,有时间,地区,销售员,商品名称,数量,单价和金额几个字段,如下所示: 现在针对不同的数据汇总需求,可 ...
- 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库
教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 说明 这节来把基础的业务部分完善一下. 因为 IQue ...
- Java并发编程(08):Executor线程池框架
本文源码:GitHub·点这里 || GitEE·点这里 一.Executor框架简介 1.基础简介 Executor系统中,将线程任务提交和任务执行进行了解耦的设计,Executor有各种功能强大的 ...
- git使用小结(本地分支与远程分支、git命令)
git git 是一个版本管理系统(VCS),可以在任何时间点,将文档的状态作为一份更新记录保存起来,并且在任意的时间点,恢复更新记录 版本管理 版本管理是一种记录文件变化的方式,方便查阅特定版本号的 ...
- jmeter中jdbc连接数据库——(一)
所有jmeter基本组件功能本文不做介绍.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包 (注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致 ...
- python3+pyqt5+opencv3简单使用
python3+pyqt5+opencv3简单使用(转载) 关于python3下搭建pyqt5(pycharm)参考这条链接. 对于pyqt的使用个人比较建议ui设计与逻辑功能分开开发. 下面介绍下简 ...
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- linux字符串转数字
方法一: [root@ffcs211 test_dir]# echo "96.56"| awk '{print int($0)}' 输出结果 96 方法二: A="2&q ...