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 方法得到新的数据(再向服务器发送一次请求)并显示在网页上,这种情况适用于页面不刷新的情况下,动态加载一些内容.比如用户输入 ...
 
随机推荐
- 他们都说JVM能实际使用的内存比-Xmx指定的少?这是为什么呢
			
这确实是个挺奇怪的问题,特别是当最常出现的几种解释理由都被排除后,看来JVM并没有耍一些明显的小花招: -Xmx和-Xms是相等的,因此检测结果并不会因为堆内存增加而在运行时有所变化. 通过关闭自适应 ...
 - kafka-clients 1.0 内部请求接口文档
			
AddOffsetsToTxnRequest version:0 name type defaultValue docString transactional_id STRING null The t ...
 - JMX基本概念
			
Object name的语法 形似 com.sun.someapp:type=Whatsit,name=25 com.sun.someapp 是domain,冒号后面的是key-property-li ...
 - unity探索者之UGUI图片描边
			
版权声明:本文为原创文章,转载请声明https://www.cnblogs.com/unityExplorer/p/13524270.html 自从UGUI出现之后,我就已经放弃使用NGUI了,原因不 ...
 - TS数据流PAT和PMT分析
			
TS流,是基于packet的位流格式,每个packet是188个字节或者204个字节(一般是188字节,204字节格式是在188字节的packet后面加上16字节的CRC数据,其他格式相同),解析TS ...
 - 第六篇 Scrum冲刺博客
			
一.会议图片 二.项目进展 成员 已完成情况 今日任务 冯荣新 购物车列表,购物车工具栏 博客撰写 陈泽佳 静态结构 自定义图片组件,提交功能 徐伟浩 协助前端获取数据 协助前端获取数据 谢佳余 未完 ...
 - CSS动画实例:圆的涟漪扩散
			
设页面中有<div class="circle "></div>,定义.circle的样式规则绘制一个半径为75px,边框厚度为4px的圆,再定义关键帧,使 ...
 - 重学c#系列——盛派自定义异常源码分析(八)
			
前言 接着异常七后,因为以前看过盛派这块代码,正好重新整理一下. 正文 BaseException 首先看下BaseException 类: 继承:public class BaseException ...
 - 玩转Spring——Spring事务
			
事务的概念:多个sql 操作 要么都成功 要么都失败 ACID特性:原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生.一致性(Consisten ...
 - Python输入input、输出print
			
1.输入input input是用于输入数据给变量.通过键盘输入的是字符串,如果需要其他格式,需要做转换.比如int.float类型数据,int() 如下是一个例子: 如果a不进行int转换,那么输入 ...