day59:前后台交互的一些方法、及注意事项:
## 前后台交互的一些方法: ```py 1. 前后台交互的时候, 必须使用json格式数据 后台返回的格式:res["code"] = 10000 res['data'] = "success" 第一种: return HttpResponse(json.dumps(res)) 前台js反序列化:res = JSON.parse(data); 前台js的序列化:JSON.stringify(res) 第二种方式: return JsonResponse((res)) 相当于使用了json.dumps() 前台:console.log(data) ## data 已经反序列化好的字典 跳转两种方式: widnow.location.href = '/classes/'; window.location.reload(); # 刷新当前页面 注意!!!!: 1. css 如果想要绑定多个相同的标签的时候, 不要用id选择器, 要用class类别选择器 2. DOM ===》 Document Object Modal <a href="/del_class/?id={{ item.id }}" onclick="return func()">删除</a> onclick="return func()",这是DOM0的方式!可以将双引号内的内容理解为一个函数,只有函数的return,没有函数名、函数体、参数的一个函数。 优点:方便快捷。 缺点:移植性差,可读性差,逻辑内容有限。 ``` ## 表单的一些使用方法: ```python 对于下拉框:select的例: <select name="classid" id=""> {% for item in classes %} {% if item.id == student.cid %} <option value="{{ item.id }}" selected>{{item.name }}</option> {%else%} <option value="{{ item.id }}" >{{ item.name }}</option> {% endif %} {% endfor %} </select> 说明:可以通过加判断,来确定下拉框的默认值,对于客户不同的选择,提取标签的一个“唯一特征值”,判断这个值,然后给出默认值。 注意!!!:select的name值,是后台获取数据的依据,它的value值是option标签对应的value值!!!,select没有value属性值。 遇到的问题: form标签向后台提交数据和ajax同时提交,ajax将失效。 另外form标签提交数据后,后台返回数据,过程是:form提交的页面,将根据后台url接口指向的页面跳转,如果是本页面将刷新。(因为它没有接受的地方) ajax提交数据:不会主动跳转页面,因为,ajax有个success方法来接受后台url接口函数的返回值,然后可以通过添加逻辑,指定跳转页面!(即可以只接受不跳转!)
```