ajax和原生ajax、文件的上传
ajax理解:
- ajax发送的请求是异步处理的。也就是说如下形式:
function f1(){
var a=
$.ajax(
{
.......
success:function(){
a=
return a
}
}
)
return a
}
f1()
如上函数f1套ajax请求,并获取ajax的匿名函数中a的值,在实际执行 f1()函数过程中,到ajax请求的时候,当前执行函数f1函数的主线程继续往下执行,而开辟另一个子线程执行ajax请求,所以最后f1返回的值1 而不是2.
因为ajax请求是异步请求。所以想取ajax中的匿名函数的返回值,可以设置标志位来循环获取。但是不建议这么做。
参考地址:http://www.dewen.net.cn/q/13078
一:form表单上传文件
前端页面通过input标签 和form表单给后台服务器上传文件。
需要注意的是:前端页面action里的url必须要以‘/’结尾。因为如果不以'/'结尾,django在重定向url有可能丢失数据和文件。
前端页面code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upload/" method="post" enctype="multipart/form-data">
<div>
<input type="file" name="img" value="上传文件" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</body>
</html>
后端代码:
def upload(request):
if request.method=='POST':
img=request.FILES.get('img')
f=open(os.path.join('static',img.name),'wb')
for chunk in img.chunks():
f.write(chunk)
f.close()
return redirect('/static/'+img.name)
return render(request,'upload.html')
注意:
- 后端接收文件的时候,需要使用:request.FILES.get()类似POST.get。是从后端上传的文件找相应的文件。
- 以request.FILES.get(‘filename’)获取的是文件的对象。我们print下该对象的信息。
if request.method=='POST':
img=request.FILES.get('img')
print(type(img))
<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
img为django.core.files.uploadedfile.InMemoryUploadedFile对象,我们导入下,查看下该对象有什么方法。
需要注意的是:name 字段,name字段为父类中的构造方法的字段。
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+UAAAC7CAIAAACMzajHAAAgAElEQVR4nO3dz2/bxp//cV1z7K2nnj6Xz7A/4n67+PjQNF6jhuAGsQvUWQWpgDZxcglaHYwYMRYrYIUgiL9QekqlAkEuunzWAb4CNimg4PsHKJf0P9rLHkYaDoczQ1IipaH1fMAIHEtDvUkNqZdGQ6qx9X/+xfi5detWBAAAACAADfI6AAAAECzyOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6AAAAEC7yOgAAABAu8joAAAAQLvI6sIlEe3gxGbaEWHchAAAgQwl5/bsfrv519qX8ebnHy38Qdk/Hr9+9lz+9dplPihD7ndH09bv3hdJe0Vby/uk7L79eYq87WDqnir3uYFJ4I+RdeHv4+t37i/5xpa2seX3h9eqMxh32fQAAqtFQGd0l54LE3hfrzesqEcqfi1F31xs4VPLTI06rP1vC4HS/+pIzCHHcm5iZ1fpH5xLaw9LzurR7Ol4gqqpWsrD0j9rsrrw+u3WJ9Wr1p+pR1NMtH0j1n4tRN8+ihDjuVTNELdrDonndaKVWTf/JucwF1ku0hzk3GgAAKKrhH1OvUV6flVEkyc2GJCezoUEZhQMJ65IsSa+nUFAONq9HqVVLr6nHwuuVHlxv9af6cgoF5ZDzerTEqi2S18Vxb8IQOwAAlSiQ15PzXj57+fhqb1tLA7a8/uDnLdXkr7Mv//zhU8+tH37+LM9NfukkJ8fRLybDlvqsf55aRHt4MRn3+mMZE3dPx4PTrkqN1gH7OOKfzh5IDmTqSUifsxE/VjwhZNxpx7MO/u3v9+SbBPU+IR70HXX/9e/3rHn93779D7Uuaqw6/ZGCK9daK4xSg7L64+pbY3C6n0zezk82vK1mAX3+xzivZ056sa5Xng9Ydk/HRmZ1hVq5qF77WD076fFjV651bV79U4WLVLqNR/cnw5aWrdXbSOsnP65W+qrJySpq1TInvVjXy19GlPzgIn1TUG+DAQCol7x5/cHPWx+0gG78N8oxvi62P//z8Za6w3c/XP3w+IsHs+j2ae+XLRXKPTdlsia53dPxxWQ86Hd3hdDHcWVe77TlmOt+ZzTu7M1uTY3+7ndG00Rknwflwem+DEC9tjBmcczmruj5dZ7YBqf78s7qsYx8NotW7vH1eUnjweyelgkk6a2RWWF8z/lKpe8WvwVKbk9zQ7lbRcn8Zw2OnkF023o5y9AbpjOlZxBapkx16+7p2Ijs1lzb6k/1u7X6iWe2NV+aMdIve4K+dqpVZ5SoUL+np1WUmO1jGfn2DKJbb/KU4do+RiXkdQAAFpPI6+mZ6/JfI2pHUST2vsiT14X47OXjxEi5uoO8v3Xo3XNTJk9en0962e+M5mlY5vU90epPe/3hxai7qw36Wqb/TubjlPNJ2LNfVF7XMq6qR09LKuJ7yk5Wm5nX9cFs886WXOut0BhDtZYktfqz0O/ZUJ5WerWuqTWF8rqnDL1hOmX683rqzokFWnNtL5VZ1bmYamDbeJci9rqD5Ki/XsZgYs5El7HY3ypKja+b27BgXneVoXjyOgAAWEau8fV0Xk9L53XZSg2NWxeiB/oPv3z+XeLESudNvjKceT0xecPI66pVMkTa5+PG8wqSEwx6bWGk8yiVj9N3mK+sGvY2xtr3jYgpU9Guyuv6dIs8ed1dofwlfmit8nSk1vO6a0N5WlmrTW/nQnndVYau6Pi68ejmnQvmdX2Gt942I687QnD+vG5vXjSvZ2Vx8joAABXJl9flpJT5HJVoHqbTg+KuMXi5BHWH9CyXBz9vyVDuuSnP+iyW1+PmIjEfRh+9bvWnKtzPZomoX4rMh3G+DYhnFSfukBhu3+sOUtPr1cqqCj1bw1NhcqA9sfB0lO+Nxvp8GPuGcrfSN3Whp9K9Xs4y9Ibp+evGZQ31WR/6u4vZRsg3H8b1BkCfAGMsXB8CN+ZHGe8x9CuxeFqlKzEUzeueMqx3MG5iPgwAAAtreC67bvzFeg5oesbLX2dfqpiuTlH98Phqb+/zPx9vyYYqvmtNEhPWrTf5uU43jK/bOJukPrvPf/2//58+MVG/nqOxwNkf5xPQ5Wj67Jd51JbxSD9r0xiuNmYUpIdvPbNljCbqjYd+fupuamq4dXKItcLkttJOitVm0qsHas3vqd6lGBtqXqS91X/+u/PMS0/x/vXylBEv3HbxdX3z6k3kLClrncYD6ZNDjCL1UJ48D3XYm0yNd2Lxs9wf6stMdGzjLYSjVeIpTgZrT/GemzxlzNfa+fkGeR0AgGU0XN+UxLecrpj/iuPO+xe/6t+G8wwDp+9ZxaUwLyWuvw4AQHXM7zfVTzPFKrlORXXen7y+kPzfb0pez4/vNwUAoDpmXvfMZUdF9FkNeb/pybjSCKm9bNp1zUmiAABgncjrAAAAQLjI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4gs7rzadH9/64dfi9UL8seRMAAABQLw2V0V3WVZkQ24fDo7vD5rX4F7HMTQAAAEDtNPxj6mvP67fvb6lflrwJAAAAqJ2A8/r1ndvDg+Z1oX5Z8iYAAACgdsLN6wAAAAASeT09c528DgAAAKwR4+sAAABAuMjrAAAAQLgansuuE9YBAACA9Wq4vimJsA4AAACsnfn9ppxmCgAAAITDzOueuewAAAAAVoy8DgAAAISLvA4AAACEi7wOAAAAhIu8DgAAAISLvA4AAACEi7wOAAAAhIu8DgAAAISLvA4AAACEi7wOAAAAhIu8DgAAAISLvA4AAACE63LmdSG2D4dH9/64de+PW3eHB83rIr7p++bdpzue+x9+L6I1qbQMcX3n9vDo7rB5TRRYctFW1s2LBQixfZjsuhGbFwWJ6zu3C+7yAIAAhZvXv7p/IJPrAuG1+fTI1eSr+wd3H21bbxJi+zCA17bqyhDXd2471r2sVp7N61z+983b97eKVnXpWfvwApt3lcJ/KsOvsHSegyEAoC7CzevStUdHt58eFHqJFdd3bi80Brlww3JVV8ZiYaXqiHPtEXnCdO3RUci53CX8pzL8CksX+Hs8AEAeQed1+UqTf3xXTt5Qo/L3/rilJg/kmWry1X3LG4Pm03iBeaaFiO+b6nHVg8rFyk8M7j49cM3V8ZQhF2uslKXC5IYyPqO49ih+OM96eVo519qxeeXf7z7dUQ+nP9a1R4knS22ozFW2kg9x+Gi2/eXC9YezrnJmK1cZqrMd3p/9IlupTSHvrDZm/piYnsOw8ESpor03uzZta+jPl+epdG2ozAqtHTvz+XLZ2M721f0D5lABQN2Fm9fVMLMQ24dFXm/8Q2jNp86X9nTDa4+OjBf1PCNVxhsMfbHy9Tj+r212qbUM/UXdNWBmLK359Cj5duXg9nzdPevlaZVHevPKqKEHu0Sgd3yYkHOVU48+a9V8enT30bbeczJW2d3KX0bz6ZF606UewugnRcd0PYPrnt5rXc4CvdfD6GDm8r2fC1k3VM4KLR3b8XzpKTn9DnaBzuZZYF06G3kdAC6BcPN686k+GJw9xCv5J397IkW6oTGUmH/szRgg14tPv5oaq2YpI/Xxgv4ar4+F62EiPUivluNZL0+rPKyb15hOY4zW2z9M8K5y5qMLsX0o1zTHKvtaZZXh6k76k1g0JcsRU2u+LzRRauHe6yfzq3WNrE/lrBhHx/BU6OrYnucr02Z2tprOrQIA6ALN6+kPr3OOUPozjSc8pRt+df9gsamuiQH15Itu+o1H81HiQa1lmBl6noCvPTrSE5j+uOkHUsvxrJenVR6uuKA/nDFCbJ1s41llD9VK3VmtqWeV/a38ZXiqkuu1wKnD1svCqIfLH7wW7r15WGeheOZNWTeUp0JPx/Y8XznK3rjO5nn7BwCokRDzevqidflTo/+enpkJ1tdLIx7lnNigR1L5qfdsgcmZIfKl1HhQexna1vjq/oHKSXr+EN83janhxuOqT9I96+VplYd1++jvAYx3I4mhQS1YeFbZQz2Q2izqF88qZ7TylpHZnRa4NIe4vnPbsc1dDzc/LyL5xi+r91pbZRRmzqjWJl47nkpP5d5+6OzYnucro/6N7GyeC4AW7QAAgDUKLq+rkfXZCVXaKaT+6GN8gO4/GU69FqZb6QnVaJhzdFNvdfvpgapEjpDpM2L1UUNPGfqt1rPQ0usVaVNv7w4Pmtdn56WpXO5aL0+rPOtrfe7kusT/TU63tX6E4lplq/isu3nNyV/sq5ynlauMzM9/jPdm+VnDrqv36newfrLh6b2uVi7mBJXUmwrrU+nfUK4KrR3767//I/P58tu0zuYfXC/aAQAAaxRcXr/ENvBachtrmYtyGmcrAn6e82jpSABwOZDXVySQL2PCauQ/QzqNLzFFIdbOxmXXAeAyIa+vQtGrO6OmElMaikz9B4qiswHA5iCvAwAAAOEirwMAAADhIq8DAAAA4SKvAwAAAOEirwMAAADhIq8DAAAA4SKvAwAAAOEirwMAAADhIq8DAAAA4SKvAwAAAOEirwMAAADhMvO6DOuBRPbm06N7f9w6/F6oX5a8CQAAAKiXhmtkfe2RXYjtw+HR3WHzWvyLWOYmAAAAoHYanmkw643sMnnfvr+lflnyJgAAAKB2Gv4562uM7OL6zu3hQfO6UL8seRMAAABQO+HmdQAAAAAN4zRTXUReBwAAANaK8XUAAAAgXOR1AAAAIFzkdQAAACBccV53WXeFAAAAwOYyv9/UM9YOAAAAYMXI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4yOsAAABAuMjrAAAAQLjI6wAAAEC4yOsAAABAuMjrixOfnL9pnN8RYgWtoBPt4cVk2Ap4G4ZfIVBf7F8ANk3QeV2IT3u/bP119uWHx188yHdoFuKzl4+3/jr7Uv78+cOnFZZXk7wu9rqDpV/bxNZPT46e/37rtxdHnUPbooS4eXL0/Pdbv8mfk+1lV1CI495k+vrde/nTa8cLtL5ai73uYDJ9/e79yl7Ii1boW1S+4kV7+Prd+4v+8bKlA3UWbF7fPR2/fvd+cLq/7kKAeuuMxp294Hbw9WqojO6y7gqj7364mjOvy3z/4efPVlBV6b79+NWrj7+tYsmt/rSs1w8hbp448vph8/mTnWulPIq0WNlCHPdW9UJe4oaV8hQv2kPyen3tno7L7TOLLbD0MqCEs23DqcSF3WF5Kyg+PZy0gtEx0R5ejLpVLLm+Gv4x9brl9c9ePt6qdEy9OhXl9VIG1+OlefP68mPqulZ/qo9Y57TivL5AhR7k9UuPgHLphbNtw6nEhd1heSUWLz8dSv8MTveF2O+Mpvqnu7un40o/4xLiuDdhiD0hxLyupsHICS16Xtdv+uvsyw+/fP6d7e/GreVX+LeTV403bxtvjZkt4pPzt423b66cnFx587bx9m3j7ZuP7mS3mv9d/bxpvDr5WzmV756O0/HusKlNXGl21Li4MaclPV5uzevf7HRVE/nzonlzyZqN44Vahcy39dbIa0xcWf7otliFmWW48ro8UM6WmSOvz6bNjLpxQ62JvHW+wNkBcd5kLCvstWelxutV6jYMv0JLJf2h/uzofSCuwb1eqmOkV81T/MILdK6Rt9XsJXkybAmhSrroH8u/q20uS4qXWcGWb/W1mWb9YbxBPPtXatXiVivsGzI/5e/YkuxOF5NhSytVDQc4t4ar2yzUNxZe5YjdYendIfOplGsqe4Is0l+8p0d5+qG7vP3OaHoxGg8ms1EqI69bO0BcQ3It9GXGrUbd3eQe7fkEW26H+r7LWkxweV2Okauo/d0PV9X8dWP4fDb7RQvlKx5fF+LOeWomugzfaqT85Mqb809EZquosvH1dI8X2x2Vp2VAV7n83kFijPzegTnFJZDxdc84tPWmziixqM6onHksRSvMLMPVyny5yjG+Lg/lqqH+0EIct9Tv2scvskmvLeJftHpK34bhV2i8ILX6U/XfVn+qv0K3+lMjN1jXK3IPhnmKX2yBmatmbWX0QLHXHcxXU75AqofePR2rLVB+39DelMock2dPEXvdgT74pz1Bq+wbxhT2PB1bX9PXyTNhIu/W8K9XucPG7A6V7g6+Vdae9PSotmeVnT3K2w8di9rvjKYX/WO5prtCqEpmN6mjtDjuTaYqfO+eji8m40G/uzt/zyOrNXry/P1AIrIbe7GOvB6lZ66vPq9/98PVD4+v9rTk9+DnLZnXZXY3B9G1O4eS16+cqP/e+WjNed16sLh3EA+ivzj4Sf39iTa4nr41qm1eNwYhjOGQlVWYWUa6lR5BZn/JNx9Gf2kxSjVGZRJTEkddvQy9ntK3YfgVek546qWWrO7sWa/I/eLqKX6xBfp5Wuk36Y+Vfuff6s9WuYr9yxh4M271zxwz4mMVFXr6hrFt83TszJVybQ3/epWb19kdKt0dMlt1RtPByJJfs/K6pUe5+mHmfJiL/rH8ZXC6H+f1+ehJvPz2UA3by7w+6wzzhbgeK/2hE1PYdcGNr6dnq+t53YjyBvJ6WuY5kYfN52q4/UkynafVNa9Xs88XzutZZawmr/fMz53zpeGyt2H4Fa40oLiLX3FAibet93H1v1S0f+kPZPR5f7RN7yCr7BuevO7q2K6/WOlbw79eNc7rm7c7+FvJydyD/jg9Fr5AXvf3Q8ei4qgt9rqDybjXn+d1LZ3P7qwleP0DASOvZ07FIa8bgsvrYvvzPx/H13gR25+//OWqPh9GnwDz4OetSzm+/u3Hr8q65mN6/rpxIZdvdrrqv8ZNYruz/Pi6usLmy4KzJ0vM68abFuPE85VV6C/D1Up/mZx91LhcXteP+PqH2v40XPo2DL9C49VCvkrJ58J46hMzFnLnCf2VzFP8YgvMXDVPq/kM7MSrqf5EGFWVvuWNBaYTiedMD33ymHpSVtk3PHnd1bH9K+XZGv718jzL7A7Gqq1sd3DxrXJ7aEw9z7nKrh7l74dWetSOEpPj88yHseR1427zSsyNzPx1XcNz2fV1XRxGv4b6h18+fzCfBvNyT6TPK5Xp3H6+aWUXdlSnk8ZniF45iaLZ+abqjNI7H83uJoO4q9V8re+cz8861f++pPTsNP1k0/SMl8RUGS2a6383GqbPN02E/r0vil4IP/1JmT5b0fWhoecm41bzZXJVFXrK8LQyPrvs9YeZH7Cq04nkQ6iT1dQMyPhR+sPeZHoxGf/6q97kuDeZar/MjqElbsPwK5QSlbjPh4tfkLzrZTRMf95d7gJ929/byvq2sNWfyr5n/eS63C2vn17p2YOMWz1ngZdeYeToG+qP+tmB/o4tG/bcJw56tkbGermfZXaHxNZY4e7gYW3l71Ge4j09ytMPHdsnPjF09rYhmdGjZC81Yv18dbSTsEdyOvu+sTsn3rF4rw+z6XndiOwhXMkRpSj9MuGFqOlM6yogU/gVhi/8bRh+hUFJT35Y+Oql4W/58Css3Qau8jJK3B2QE9dfTzO/33Rdp5miOuVegr2o3i+hXxE//ArDF/42DL/CcFjPkVg4oIS/5cOvsHQbuMoLK3d3QE58v2mamdc9c9kBAJeVOavBNpmklMt4A+Fjd0BoNjevp7+lSP38d+Of/3TcVOI3GV2CCrEu6W/KcM2kxKahbwBKILtDIGWg1jY3rwMAAADhCzSv/+Mf/1h3CQAAAMD6kdcBAACAcJHXAQAAgHCR1wFgQ/3P9nZdfta9qQBgncjrALCh6pKD61InAFSEvA4AG6ouObgudQJARcjrALCh6pKD61InAFSEvA4AG6ouObgudQJARcjrwEqJ9vBiMmwJvtCuEuKT8zeN8zsFN+9irVapom5TlxxclzphxUEPWB55PThirzvg0OagvtW5iqO/aA9fv3t/0T+utJX1pavS9SqF2PrpydHz32/99uKoc2irUIibJ0fPf7/1m/w52Z7dpzNa6bdt1yWvW3dzIY572peW99rxrRV1m7rk4LrUCatg8/ru6fj1u/eD0/11FwJkI68Hp9Wf6ocPeUDRfzIPLp3R1LibXMjFqFtV0QW1+rNQIg/isuD8FQpx3Kvm6C/aw6J53WilVk3/ybnM6tarLELcPHHk9cPm8yc71yxN2sNwOl5R33786tXH31axZGM39/wx0zLdpi45eF117p6Oyw1ziy2w9DKghLNtw6nEhd1hecsUT14Pi2twvdBLshyl08czOqNpaMMbrf7UHD7MP0QdcF6Plli1uud1NaaebHLcm6x0iL1EFeV1125u9Jy8SyOvV4aAcumFs23DqcSF3WF55PWl3Hg4PT9/L38ePhye/bgfRdHXP47Pz9/L38XX3bNn0/Pz9w9viCiKfjyTvx8/fDZr+OwsHj4UIv67WoIkl/ns2fCGdh+5TGX3dGzNdumX5Nk0jFE3HpyeN5R37s1f+0V7eNEfqubGZ+6y68yXNpY39dqz++jF6CP96b9fTIYtbcnyoWVt8q2CelzZ1hVqZRNVgHXQ3RVQXBXKtZuP6JvZMd6Ak2FLy9bWDZXZSl81ORVErVrm7AXrevnLWMxhU5u40uyocXFjTkt6vNya17/Z6aom8udF86Z+h8WGjYsSfzt51XjztvHWmNkiPjl/23j75srJyZU3bxtv3zbevvnoTnar+d/Vz5vGq5O/lfOuI72bpz9Gi/thld0mZw72HG0ix/6VeUgp1LEL1TmvcKhvFuvBwXcUnW9266HDVfzCC3SukbeV6wDrP4pWcUjRP1fs9YfxBnH33vSqxa0qqNDVN2R+yt+xJc+rnm9ruLrNQn1j4VWO2B2W3h0yn0qVc1SR/uI9PUo9j5ue18WN4bOH8evHw2dTlbC//nGsp+0bD6cqW8uIr/779Y9jFdl/PJvqEfzHs6m+EJXmjZiuuJKN/SV5rzuYxPfvjOYBXd55rzsYdaMoavXHnb24ubqbajWL7HvdwWTaa4v4F+1BW/2p3sVb/WniuDbvYcbooFG2mJcUeQehZRdXt+6ejo3Ibt0angqFOG61tRqSnzyYB5d5K9eG8reKErN9LAcgz2io9SZPGYsR2x2Vp2VAV7n83kFijPzegTnFZYHx9cj2DFZHiDvnqZnoMnyrkfKTK2/OPxGZraLKxtddu7lnfL2ibpN/3Np1tInc+5f/kFKoY+epc/d0rIfCVj/+UNF3cHCvV+QeDPMUv9gCM1ctz+uCcYB1HUXLP6SkhjmMBTpfv+atjENE6RV6+oYxhT1Px9bX1PKq594a/vUqd9iY3aHS3cG3ytqTbjwLnuIjT4+a98NNz+vRfLw8PVLuz+v6TVEU3Xg4/vFrEUXRmTa47hh9H95wf3Lt6ivO411yr0vkdSE6o3Gn3R2Munpz4x2eeq+plqburLfqpfKWfh6hJ0zovVOPI/68bmyEVj8RfK0P56nQeF97oeeJ5DCnXoZvQ7lbRanxdaOqosHLVcYy7h3Eg+gvDn5Sf3+iDa6nb41qndevnKj/3vlozXndtZuXmNdzdptied12tIn8+5f7kFKoY+ep03Nmc8bBwbFekfvF1VP8Ygv087TyHGBdR9EqDilqANW6NP+ULSM+VlGhp28Y2zZPx85cKdfW8K9XuXmd3aHS3SGzVWc0HYwsL3xZed02HXreD8nrCTceTtVwuz+vGwPk6i9nZ75nOjOvFx5f9+Z1OfRrDGsNHH2xorweL8273xp53Ugt5p0L5vWe+cldvrzu2VD58rq9edHgVXHSPWw+V8PtT5LpPI28XooVjK/n7Dal5HXf/uXJ60W6RHB53V38igNKzgOs/peqDynGp6+Rt/d2RuadowoqXCyvuzq26y9W+tbwr1eN8/rm7Q7+VvKsrUF/nD5PaYG8rvrhpud1Y6Rcz+jixlANjcup53pef6bFbvF1V8V0Y4H6QqIceT3//PUoR163Njeygrp8h//F1X8Opf/INZ8gmBwjT17hS/90Sf/kLr2arofzVKjvM8bCU+86pq5hfv06J55W6UoMRYOXp4woioT47OXjrb/OvnyZe7KjcSGXb3a66r/GTWK7U8r4umf++mx6X/FzfF2qy+vffvyqrGs+unbzEvN6zm5TSl537V+Zh5T8HTvvfBh9CXvdwfx1znNwyJ8n9I+2PcUvtsDMVfO0sh5gPUfR0g8p6Wua5ZkPE6UmFuY59i5WoadvePK654XDs1KereFfL8+zXO4qszvk3x1cfKs8Hyc1fs8s3tWjVD8kr09dc1cibarMs7OuvKfM4jceTh8+HMatns0mwxit5meXzm56mJwqY7SS0pPkXNdzVKcgyOdbzZn+/T//r/qkRs2gMqZTJz6t00bi9dMdtF/Gnb347I30J4O9rLNG0ol29nftbBjziNm3n+ijV25+7uauMHluzVCt1HyDJ84N0peZ3lDa02RvpZ9plP6AzFW85yZPGVEUib0v/jr78s8fPo1y0082Tc94SUyV0aK5/nejYfp800To914fpsS8rk4njc8QvXISRbPzTdUZpXc+mt1NBnFXq3nxd87nZ53qf19S/t08qrjbFD2P0zjaGEcYff/69deMQ0rOCuV/c9aZqMR9Plz8jsK7XkZDz+5cygJ929/bynqA9RxFXcXPllb8kGJcxNbVCY1bPedYl15h5Ogb8Yujdnagv2PPP7N1vup5tkbGermf5RJXOWJ3KLI7eFhb+XuUp3hPj1LL3PS8vpj0fJgSreZiGitW6EtzFruq3WZ68HMiMZ8AAAQ0SURBVPPWh8dfPChj0Lcitb7+enXWu5urbhPs9RyNjh1snYFIH2AXPoqGf0gJv8LSbeAqL6PE3SEo5PVFVJrXL9/3mxa9qPnl2LVWo/fLVtFBlxVb8feb1sV6d3PVbYLNwUbHDrbOEFgPsAsfRcM/pIRfYek2cJUXVu7uEBTyemHxJBnbhBYo5odu+SK7dl1zch5Qrbrk4LrUuUqeAyxHUWyaTdgdyOsAQpH+liL189+Nf/7TcVOJ32R0CSospC45uC51LiD9LSquWbbApRfI7hBIGQbyOgBsqLrk4LrUCQAVIa8DwIaqSw6uS50AUBHyOgBsqLrk4LrUCQAVIa8DwIaqSw6uS50AUBHyOgBsqLrk4LrUCQAVIa8DwIaqSw6uS50AUBHyOgBsqLrk4LrUCQAVIa8DwIb6n+3tuvyse1MBwDqR1wEAAIBwkdfrQbSHF5NhS/Bdd5Vg8wIAgGCZeV2G9bVH9sDzutj66cnR899v/fbiqHNoC3lC3Dw5ev77rd/kz8l2riAoxHFP+wrcXjtuVTRQqm/T9bcS7eHrd+8v+sc5F1trbF4AAFBHDdfI+noje+B5XRLi5okjrx82nz/ZuVZ0ga3+dHC6X0ZpM0Ic97JiqGgPNyRQsnkBAEAdNTzTYNYY2S9BXs85pq5r9af6oO/yLlmg3D0dq9Fx/SdnCmfzAgCAOmr456yvK7KvMq8fNrWJK82OGhc35rSkx8utef2bna5qIn9eNG9m1pBOoirkeaZeGBM80rHVFSg7o1mri8mwlSNQzuZ1jLpxQ62JvHW+wHFnT2hNxrLCXntWarxeWcWXiM1b6eYFAACV2vS8LrY7Kk/LgK5y+b2DxBj5vQNzissqx9et0bAzSty/MzLne7haqbvln2Atc61qqD+0EMct9ftedzB/RNmk1xbxL1o9mcWXjs2bWQYAAAhQwzjNVBdtQF6PoujeQTyI/uLgJ/X3J9rgevrWKIC8PtAGUGfjr6Ouv5XY6w6S8THnhA2x1x1oC9dLVUPU8aCyCpSjrl6GXk9m8WnVzYdh8wIAgGBt+vi64bD5XA23P0mm87T15/WsBLaaQNmbT9IwHjEjUK48PrJ5AQBAHW16Xjcu5PLNTlf917hJbHdKGV9v9RPzjI2bCgVK44Inoj3MHACOoqgzMvLfdMlAOdAeotWf5hwAziy+dGzezDIAAECAyOvPPTNeElNltGiu/91omD7f1Jj1bs3r6Zke+lRmz8QG/Vb9jElPK2N+Ra8/zJwsoU55lA8hV0EVqRd/0R/2JtOLyfjXX/Umx73JVPtllmhdxZeOzcu3QQEAUF9xXndZS1m1uJ4jAAAAUDXz+009Y+2rRF4HAAAAIvI6AAAAEDLyOqIoNes6MTNbuz4JFsPmBQAACyOvAwAAAOEKNK8DAAAAiMjrAAAAQMjI6wAAAEC4/hfdG9U1u7/uCAAAAABJRU5ErkJggg==" alt="" />
aaarticlea/png;base64,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" alt="" />
该字段为为文件的名字:img.name
还有chunks方法:
aaarticlea/png;base64,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" alt="" />
有yield 说明方法chunks()可以被迭代。也就说客户单上传的文件一点一点上传到服务器端的内存中。
- 所以基于上面我们可以对chunks()进行迭代,来把从客户单传来的文件一点一点的写入咱们的定义的文件中。注意上传来文件是bytes。
总结:
- form上传文件,会刷新页面。用户交互不好。
- 你会想到:用jquey,先不说jquery怎么去实现,首先,如果你手机app方面,你不可能让用户的浪费流量去加载jquery。
基于上面的问题,我们接下来介绍原生ajax。
二:原生ajax:我们知道,jquery的ajax,并不是ajax自己实现,他是通过浏览器的一个组件叫做:XmlHttpResquest模块来实现,是这个模块让ajax具有发送和接收数据的能力。所以我可以根据这个模块来写原生ajax。
XmlHttpRequest模块的方法:
xhr=new XmlHttpRequest()
a. xhr.open(String method,String url,Boolen async)
用于创建请求,(在发送get或者post请求前需要创建请求) 参数:
method: 请求方式(字符串类型),如:POST、GET、DELETE...
url: 要请求的地址(字符串类型)
async: 是否异步(布尔类型)默认是异步处理。因为如果设置成同步处理的话,当我们发送请求的时候,需要等待"请求",此时网页会"停顿"。等待请求结束,显然我们不能接受这样。 b. xhr.send(String body)
用于发送请求 类似于ajax里的data:{'k1':'v1'} 参数:
body: 要发送的数据(字符串类型) c. xhr.setRequestHeader(String header,String value)
用于设置请求头 在get的请求的时候不需要设置这个参数,如果我们用send()方法发送post请求的时候,需要设置请求头。如果用FormData的时候,不需要设置请求头。请求头的作用,是告诉服务端该如何处理我们发送的数据。编码、格式等。 参数:
header: 请求头的key(字符串类型)
vlaue: 请求头的value(字符串类型) d. String getAllResponseHeaders()
获取所有响应头 返回值:
响应头数据(字符串类型) e. String getResponseHeader(String header)
获取响应头中指定header的值 参数:
header: 响应头的key(字符串类型) 返回值:
响应头中指定的header对应的值 f. xhr.abort() 终止请求
如果上是XmlHtppRequest模块的方法。
总结:
- 在我们发送请求的时候,包含两部分,请求头和请求内容,2者之间用2个换行来隔开。相应的也有响应的头和响应内容也是用2个换行来隔开。
aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,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" alt="" />
XmlHttpRequest的属性(和python的属性是一致的)
a. Number readyState
状态值(整数) 详细:
-未初始化,尚未调用open()方法;
-启动,调用了open()方法,未调用send()方法;
-发送,已经调用了send()方法,未接收到响应;
-接收,已经接收到部分响应数据;
-完成,已经接收到全部响应数据; b. Function onreadystatechange
当readyState的值改变时自动触发执行其对应的函数(回调函数) c. String responseText
服务器返回的数据(字符串类型)通过这属性获得返回数据。 d. XmlDocument responseXML
服务器返回的数据(Xml对象) e. Number states
状态码(整数),如:、... f. String statesText
状态文本(字符串),如:OK、NotFound...
举例:
<input type="button" onclick="Xhr(this)" value="xhr">
js:
function Xhr(ths){
var xhr= new XMLHttpRequest();
xhr.open('get','/xmlhr/?page=2');
xhr.send()
}
虽然get请求可以传递变量,但是下面的send方法不能去掉。
def xmlhr(request):
if request.method=='GET':
page=request.GET.get('page')
print(page)
return HttpResponse('ok')
post请求:
js
function Xhr(ths){
var xhr= new XMLHttpRequest();
xhr.open('post','/xmlhr/');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset-UTF-8');
xhr.send('k1=v1;k2=v2');
xhr.onreadystatechange=function () {
if (xhr.readyState == ) {
console.log(xhr.responseText)
}
}
}
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAAA0CAIAAAAR/tPIAAACfklEQVR4nO3dMYvaYBzHcV+NL+Ho7OY7kGhAUYKDiN003CGIoCLiWDFTaRcDWgS3gkOpiyIODmLRIA4HFqNRriUpPtpBKFfaI/bu0ev/8vtMGeT5P8iX8MQMug52GGP1ej0QCAi/CwQC9XqdMWa7wkMEQYhEIqlUKpVKRSIRQRAevdRDDMMoFAqGYXBf+V9ZlrVarb7+ja7rlmU99wY5W6/X+Xz+HN+868TPaZqmKIosy6FQSJZlRVE0TXvi7OFwmMvlJEmSJCmbzfb7/Scu+Kf/J1lHMU2z0WhUq9Xdbsd98VOTJQrJXtJ2u81kMn6/XxTFSqWy2WzOMeWFJwsvD5IFYpAsEINkgRgkC8S4vgCQgrssEINkgRgkC8QgWSAGyQIxSBaIQbJADJIFYs6brKqqqqqedQQ4DZIFYngm2+v1vF6v2+0Oh8Pz+fxwL9lOp+Pz+abTKcdx4Ezckp3NZsFgcDKZMMaazWYymbQs65jseDz2+Xzj8ZjXLHAybsm22+1SqXS81nU9kUjouq6qarFYjMVi6BV4OXuy5XJZkqROp8NrEDgct2RHo5EoipqmMcZqtVo6nf51MFgsFtFotNvt8poFTsYt2f1+32q1PB6P2+2Ox+PL5fJw7/HreJwdDAa8xoFj4VUCEINkgRgkC8QgWSDGZQCQgrssEINkgRgkC8QgWSAGyQIxSBaIsUn2ds3efDT3+8tsBsCeTbLvP1tX15sb9fvu8f/iAcCT/cHg7Sfz6nrz+t0388cF9gNg46Sz7Iee9epmIyl3dyaOCPDMkCwQg4MBEIPHLyAGP3IBMXiVAMQgWSAGyQIxSBaIQbJADJIFYpAsEINkgZifxOWFnlT307gAAAAASUVORK5CYII=" alt="" />
注意:
- 由于get请求的时候,不需要设置请求头,post需要设置请求头。
- 当我们发送多个数据的时候,形式需要这样:'k1=v1;k2=v2;' 分号;隔开而且不能写多个send(string) 发送数据。
- xhr.onreadystatechange=function (){xxx}当onreadystatechange发生变化的时候自动执行后面的匿名函数。当readState等于4的时候,说明数据传输完成,我们接收数据。如果不写xhr.onreadystatechange=function (){xxx}的话,我们接收的数据有可能是空。因为我们不能确定什么时候数据传输完成。
FormData对象:
我们可以通过FormData对象来往后端传送相应的键值 类型于form表当传递键值对。
function Xhr(ths){
var xhr= new XMLHttpRequest();
xhr.open('post','/xmlhr/');
{# xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset-UTF-8');#}
{# xhr.send('k1=v1;k2=v2');#}
var form= new FormData();
form.append('k1','v1');
form.append('k2','v2');
xhr.send(form);
xhr.onreadystatechange=function () {
if (xhr.readyState == ) {
console.log(xhr.responseText)
}
}
}
注意:
- 我们在传递FormData的时候,不需要设置请求头。append的时候逗号隔开的2个字符串!
三:基于原生ajax上传文件:
原理:通过DOM获取文件对象: 以及通过FormData把文件对象加入上传列表中(append)来上传到服务器端。
html:
<form action="/upload/" method="post" enctype="multipart/form-data">
<div>
<input type="file" name="img" value="上传文件" id="img" />
</div>
<div>
<a style="background-color: dodgerblue;cursor: pointer;display: inline-block;margin-top: 8px"
onclick="Xhr(this)" >提交文件</a>
</div>
</form>
js:
function Xhr(ths){
var xhr= new XMLHttpRequest();
xhr.open('post','/xmlhr/');
var form= new FormData();
file_obj=document.getElementById('img').files[];
form.append('img',file_obj);##追append的时候key,value形式。key是后台获取文件对象的。
xhr.send(form);
xhr.onreadystatechange=function () {
if (xhr.readyState == ) {
console.log(xhr.responseText)
}
}
}
python:
def xmlhr(request):
if request.method=='POST':
img=request.FILES.get('img')
print(img.name)
f=open(os.path.join('static',img.name),'wb')
for chunk in img.chunks():
f.write(chunk)
f.close()
return HttpResponse('ok')#需要注意原生ajax和jqurey的ajax 返回都是字符串。
三:基于jquery版本的上传文件:
基于jquey上传文件,和原生ajax上传文件的原理都是一样,底层都是调用模块XmlHttpRequest模块来实现文件上传,只不过jquery的ajax,的实现底层是由send()发送"k1=v1;k2=v2"的形式完成。在发送的时候,还需要设置请求头,告诉接收端该如何处理我们的发送的数据。
我们想用jquery的ajax上传文件的话,需要用FormData来实现。
所以:基于jquey的上传文件需要解决如下问题:
- 告诉底层xmlhttprequest 不要把:data:{‘k1’:'v1'} 转换成:send('k1=v1;')即:processData:false。告诉xmlhttprequest不要处理我们的数据。
- 告诉底层xmlhttprequest 不要设置请求头。contentType:false
- 然后创建formData对象进行文件的对象的获取以及发送。
jquery:
function Xhr_Jquery(ths){
var form= new FormData();
var file_obj=$('#img')[].files[];//获取文件对象。
form.append('img',file_obj);//注意是key value形式。
$.ajax({
url:'/xmlhr/',
type:'post',
data:form,
processData:false,//对我们post数据不做处理。
contentType:false,//在post的时候 不设置请求头。
success:function(data){
console.log(data)
}
});
}
aaarticlea/png;base64,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" alt="" />
注意:
- 无论是原生ajax还是jquery ajax上传文件的本质原理是一样的。
- 这2种方法 有个弊端浏览器的兼容性:都不支持IE浏览器。因为FormData在IE中不支持。
四: iframe 上传文件,用"伪ajax"提交数据,支持所有的浏览器
原理:利用form表单,在input标签提交的时候,把from的表单提交的通道转到iframe的,通过 iframe 通道提交到后台,然后隐藏iframe标签,达到当前的页面不刷新。
html:
<form id="fo" name="fo1" action="/upload/" method="post" enctype="multipart/form-data">
<div>
<input type="file" name="img" value="上传文件" id="img" />
</div>
<div>
<iframe src="" style="display: none" name="iframe" ></iframe>
<input type="submit" value="iframe提交" onclick="Iframe()" />
</div>
</form>
js:
function Iframe(){
document.getElementById('fo').target="iframe";//注意在dom中 没有#fo 直接id名字。
document.getElementById('fo').submit()
}
利用iframe的通道,上传我们的文件。通过设置 target的属性,等于iframe的name属性。来改变form提交的通道。通过js来实现form的提交。iframe只是给咱们提供一个通道,并没有其他作用。所以最后我们隐藏的iframe标签既可。
注意:
- document.getElementById('fo')没有#
- 注意target是iframe的name属性不是id属性值。如果是id属性的话,会导致跳转问题。
上面只是操作文件上传到后台,但是我们需要知道是否上传成功。后台代码如下:
def xmlhr(request):
if request.method=='POST':
img=request.FILES.get('img')
print(img.name)
f=open(os.path.join('static',img.name),'wb')
for chunk in img.chunks():
f.write(chunk)
f.close()
return HttpResponse('ok')
后台给前端传来字符串ok,ok嵌套在iframe标签内:
aaarticlea/png;base64,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" alt="" />
这个时候我们需要绑定时间来获取这个这个返回结果,因为frame传到后台之后,后台返回结果,也就是说当frame标签加载完成(onload)之后才有这个结果。所以绑定事件为:onload
function Iframe(){
document.getElementById('up_fr').onload=callback;//绑定回调函数。
document.getElementById('fo').target="iframe";
document.getElementById('fo').submit()
}
function callback(){
var content=$('#up_fr').contents().find('body').text();
console.log(content)
}
当我们上传文件的时候,没有点击任何按钮的时候,就直接上传到服务器(抽屉例子),实现这个功能需要绑定给input标签绑定onchange事件。
还有我们上传完文件我们需要预览 这个可以直接添加img标签既可解决。
后端只是传给我们简单数据。我们可以顶一个json格式{status:False,data:None,error:None}来标记我们是否上传成功。
完整版:
实现代码:
js
function Iframe(){
document.getElementById('up_fr').onload=callback;
document.getElementById('fo').target="iframe";
document.getElementById('fo').submit()
}
function callback(){
var content=$('#up_fr').contents().find('body').text();
var con=JSON.parse(content);
console.log(con);
if (con.status){
var tag=document.createElement('img');
tag.src='/'+con.data;##注意回传的数据中文件的路径:static\1.jpg少一个/
tag.className='img';
$('.view').append(tag)
}
}
需要注意的:
content=$('#up_fr').contents().find('body').text();
中的contents,iframe标签回调完毕的时候,会在现有的文档内嵌入一个文档,如果想要获取内部的文档的内容需要用:contents()函数来实现。
aaarticlea/png;base64,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" alt="" />
html:
<form id="fo" name="fo1" action="/upload/" method="post" enctype="multipart/form-data">
<div>
<input type="file" name="img" value="上传文件" id="img" onchange="Iframe()" />
</div>
<div>
<iframe src="" style="display: none" id="up_fr" name="iframe" ></iframe>
{# <input type="submit" value="iframe提交" onclick="Iframe()" />#}
</div>
<div class="view"> </div>
</form>
后端python代码:
def upload(request):
STATUS={'status':False,'data':None,'error':None}
if request.method=='POST':
try:
img=request.FILES.get('img')
file_path=os.path.join('static',img.name)
f=open(file_path,'wb')
for chunk in img.chunks():
f.write(chunk)
f.close()
STATUS['status']=True
STATUS['data']=file_path
back_data=json.dumps(STATUS)
return HttpResponse(back_data)
except Exception as e:
STATUS['status']=False
STATUS['error']=e
back_data=json.dumps(STATUS)
return HttpResponse(back_data)
return render(request,'upload.html')
ajax和原生ajax、文件的上传的更多相关文章
- Ajax+Java实现大文件切割上传
技术体系:html5(formdata) + java + servlet3.0+maven + tomcat7 <!DOCTYPE html> <html> <head ...
- SpringMVC + AJAX 实现多文件异步上传
转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇 ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
- spring mvc ajax异步文件的上传和普通文件上传
表单提交方式文件上传和ajax异步文件上传 一:首先是我在spring mvc下的表单提交方式上传 ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来 这一段我也不知道怎么给大家讲解就是直 ...
- Ajax实现文件的上传
Ajax实现文件的上传 准备 ajax的参数补充 type不写的话默认是GET dataType和ContentType: dataType: 浏览器发给服务器希望返回的数据类型 .. 如果明确地指定 ...
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- ajax +formdata ,后台为PHP 实现上传整个文件夹(只适合谷歌浏览器)带进度条
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...
- C# 用原生JS进行文件的上传
1.此文章是用原生JS来进行文件的上传,有两个版本,一个不用ajax,一个用ajax. 1)非AJAX <!DOCTYPE html> <html> <head> ...
随机推荐
- FZU2150(KB1-I)
Fire Game Accept: 1955 Submit: 6880Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Descr ...
- html 里面的 role 属性是什么意义和用途
使用role属性告诉辅助设备(如屏幕阅读器)这个元素所扮演的角色,属于WAI-ARIA. 例如点击的按钮,就是role="button":会让这个元素可点击:本质上是增强语义性,当 ...
- CSS reset的审视
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=758 一.CSS re ...
- python学习之老男孩python全栈第九期_day015知识点总结
# 作用域相关(2)locals() # 返回本地作用域中的所有名字 globals() # 返回全局作用域中的所有名字 # 迭代器/生成器相关(3)range()print('__next__' i ...
- display none隐藏后如果表单有数值,那么他的数值还存在!
以前以为display:none后他的值就不存在了, display:none隐藏后如果表单有数值,那么他的数值还存在.(项目出了问题!!) <!DOCTYPE html PUBLIC &quo ...
- 移动端meta标签设置
移动端meta标签设置 1.设置当前html文件的字符编码 <meta charset="UTF-8"> 1 2设置浏览器的兼容模式(让IE使用最新的浏览器渲染) &l ...
- FineReport中如何用JavaScript自定义地图标签
在日常使用地图过程中,通常会遇到地图标签,提示点等显示不满足我们的需求,需要进行JavaScript代码编写. 例如:在使用地图过程中,会发现很多地名显示的位置偏离.这时候就需要使用JavaScrip ...
- 星级评分进度条(RatingBar)
星级评分进度条(RatingBar):(主要用于评价等方面) 常用的xml属性; android:isIndicator:RatingBar是否是一个指示器(用户无法进行更改) android:num ...
- String path = request.getContextPath
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+ ...
- JSON学习笔记-5
JSON.parse() 1.从服务器接受数据进行解析(一般是字符串) 2.解析前要确保你的数据是标准的 JSON 格式,否则会解析出错.可以使用线工具检测:https://c.runoob.com/ ...