Thinkjs使用ajax實現表單提交


//前端代碼
1
$('form').submit(evt=>{ 2 evt.preventDefault();//阻止表單默認提交 3 $.ajax({ 4 url: '/user/personal/update', 5 type: 'POST', 6 dataType: 'json', 7 data: $('form').serialize(), 8 success:res=>{ 9 if(!res.errno) alert('上傳成功!'); 10 else alert('res.errmsg'); 11 } 12 }); 13 });
 //后台(controller)-src/user/controller/update.js
1
async indexAction(){ 2 return this.display(); 3 } 4 async updateAction(){//通過post的方式來獲取值即可 5 let userList = this.model('user'); 6 let userInfo = await this.session('userInfo'); 7 let formData = this.post();//獲取所有傳進來的表單數據 8 let affectedRows = await userList.where({user_loginname: userInfo.login}).update({user_name: this.post('inputNickname'),user_mailbox:this.post('inputEmail'),user_tellphone:this.post('inputTell'),user_city:this.post('inputCity')}); 9 this.success();//此接口的返回值 10 }

前端通過serialize()序列化,后端通過this.post(key)獲取即可,key就是html中表單元素的name值。

Serialize()的結果是一個字符串,類似表單提交的字符串。Eg:'a=1&b=cccc'。

Ajax中的type是'post',所以后端中通過this.post(key)方式獲取即可。

Ps:ajax的type如果是'get',那么后端通過this.get('key')獲取即可。

Ps2:在后端相當於沒有用ajax,和 直接通過form的post和get提交的那種獲取數據方式是相同的,但是如果要區分的話,可以通過下面這種方式來獲取

具體可以參照thinkjs官方文檔中的controller.get(),controller.post和controller.parma()的具體內容(https://thinkjs.org/zh-cn/doc/2.2/api_controller.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM