网页前端提交数据给后台的几种方式
按照编码格式分类
contentType 码格式分类:
urlencoded() >>> username=jason&password=123
form-data >>>二进制方式传输文件
application/json >>> {“name”:“jason”,“password”:123}
form表单默认提交post请求数据编码方式 urlencoded
username=jason&password=123
ajax默认提交post请求数据编码方式 urlencoded
name=jason&password=123
说明:form表单和ajax默认提交post数据的编码都是urlencoded
用以下方式解析
data = requet.POST.get()
request.POST不会解析json编码格式的数据,二进制数据都在request.body里面,你可以自己手动去解析出来
前端提交
注释:data:JSON.stringfy({'name':'json','password':123},)
指定了json格式,提交的数据就必须是json数据的,不能欺骗服务器。
$.ajax(
{
url:'',
type:'post',
contentType:'application/json',
data:JSON.stringfy({'name':'json','password':123},)
success:function(data){
console.log(data);
}
}
)
后端解析
def index(request):
data = request.body .decode('utf-8')
data = json.loads()
return render (request,'index.html')
form表单按照标签分类
a. input 标签
<form>
<input name="name">
<input type="submit" value="提交">
</form>
其中点击按钮后的url变为?name=222222222。
注意点:
- 设置type=submit后,输入控件会变成一个按钮,显示的文字为其value值,默认值是Submit。
- form[method]默认值为GET,所以提交后会使用GET方式进行页面跳转。
- input[type]默认值为text,所以第一个input显示为文本框。
- 注意:input的type属性还可以是button,这时它只是一个按钮,不会引发表单提交。
b. button标签
button的语义很明确,就是一个按钮不含数据,作用就是用户交互。但它也有type和value属性。 type的默认值是submit,所以点击一个button会引起表单提交:
<form>
<input name='key'>
<button>确定</button>
</form>
我们通过设置元素内容的方式来指定button的文字。这意味着button是一个容器控件, 其中可以包含任意的HTML标签,同时样式更容易定制。
但是,button会很乱。button可以设置name和value。提交表单时,value会被作为表单数据提交给服务器。 在IE中,甚至会把button开始与结束标签之间的内容作为name对应的值提交给服务器。button和input的相似还不止于此,button也可以设置type=reset,此时点击按钮会导致表单被重置(这还挺有用的)。
<form action="form_action.asp" method="get">
First name: <input type="text" name="fname" />
Last name: <input type="text" name="lname" />
<button type="submit" value="Submit">Submit</button>
<button type="reset" value="Reset">Reset</button>
</form>
c.阻止表单提交
阻止表单提交也是一个常见的话题,通常用于客户端的表单验证。通用的办法是设置onsubmit:
<form onsubmit="return false;">
<input name='key'>
<input value='ok' type='submit'>
</form>