iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
Modern Web

走入前端,才從0開始數,初學者歷程系列 第 19

day19-AJAX:post使用者輸入/表單(AJAX完成篇)

  • 分享至 

  • xImage
  •  

安安~今天的內容就是把前兩天的文章做出最後的結果AJAX-post,所以如果覺得內容跳太多的話可以往回看前兩篇再來繼續歐!


1.先來做一個小測試,在昨日的html程式碼中加入一個隱藏欄位,讓他回傳的是JSON

input(type="hidden" name="json" value="true")
// 接著輸入資料,點選送出會發現回傳了json
// 在增加hidden讓使用者不會看到
// 沒問題後先把value變空值 value=""

//設置一個AJAX button
button.AJAXbtn AJAX送出

測試結果如圖,會長這個樣子
https://ithelp.ithome.com.tw/upload/images/20201003/201301063C2dqpSSLC.png

2.當新增完點擊事件,輸入完資料送出後,但系統又手動送回後端回饋出網頁,所以不想讓他觸發預設的跳轉,必須設置一個引數(evt)並使用preventDefault,可以控制原生的動作(如在本題防止表單自動送出重新整理)

var r = $("[name='option']").val()
console.log(r)
// 增加js
$(".AJAXbtn").click(function(evt){
	evt.preventDefault()
	console.log("ajax送出")
})

3.設置AJAX送出

// 設置AJAX送出,使用preventDefault
$(".AJAXbtn").click(function(evt){
	evt.preventDefault()
	console.log("ajax送出")

  post() // 打包表單資料寫完要記得回來呼叫
})
// 打包表單資料
function post(){
  var datas = $("form").serializeArray()
  $.ajax({
    url:"https://2017.awiclass.monoame.com/api/demo/feedback",
    method:"post",
    data:datas,
    success: function(res){
      console.log('ajax result:')
      console.log(res)
    }
  })
}

輸入完資料按送出就會跑出以下後端回傳的資料:

https://ithelp.ithome.com.tw/upload/images/20201003/20130106be5lhqjWXP.png

把它改成JSON才好處理,在function post裡面增加這段程式碼:

function post(){
  var datas = $("form").serializeArray()
// 增加這段--------------------------------------
datas.find((obj)=>obj.name=='json').value="true"
// ---------------------------------------------
  $.ajax({
    url:"https://2017.awiclass.monoame.com/api/demo/feedback",
    method:"post",
    data:datas,
    success: function(res){
      console.log('ajax result:')
      console.log(res)
    }
  })
}

術後結果:

https://ithelp.ithome.com.tw/upload/images/20201003/20130106UAtXVezG6S.png

最後就是把AJAX的結果顯示在畫面上,回到html增加一個顯示的欄位

// 在button上面新增一個欄位
.feedback

抓取feedback裝上新的文字,新的文字是:res裡面的response(上面的圖片就是res內的東西)

// 打包表單資料
function post(){
  var datas = $("form").serializeArray()
  $.ajax({
    url:"https://2017.awiclass.monoame.com/api/demo/feedback",
    method:"post",
    data:datas,
    success: function(res){
      console.log('ajax result:')
      console.log(res)
// 抓feedback裝上新的文字,新的文字是:res裡面的response
			$('.feedback').text(res.response)
    }
  })
}

輸入完資料,點選不推薦,按AJAX送出後就會顯示出紅色框框的結果給使用者

https://ithelp.ithome.com.tw/upload/images/20201003/20130106oxsqqRyzfz.png


YA~那終於把AJAX post告一段落了...感謝大家


上一篇
day18-AJAX:post使用者輸入/表單(實作css整形)
下一篇
day20-重溫Jquery學習日(一)
系列文
走入前端,才從0開始數,初學者歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言