天天看點

一個ajax同步與異步引發的血案。

前言

  公司做網上促銷活動,需要充值換取相應的抽獎資格,抽獎可以獲得豐厚的禮品,而且抽獎資格門檻有點高,上司下達指令保證活動的正常上線與運作,上司很重視,就這樣,在上司的安排下進行了相關活動的coding。。。

正文

  開發過程倒還順利,隻是轉盤抽獎耽誤了點時間,不過最後還是正常制作完畢,相關測試人員也進行了測試,活動上線開始倒計時,心裡有那麼點忐忑。

  果不其然,活動上線2分鐘,一個玩家在沒有任何充值,而且抽獎資格也是0的情況下,抽了5,6次,都獲得了比較給力的禮品,這是檢視資料庫記錄得到的結果,由于活動上線會随時關注,便及時發現了這個問題,再看抽獎資格為-6,我了個去,明明在抽獎之前就已經做了驗證,不可能是抽獎驗證出了問題,估計是充值接口的問題,于是讓同僚再檢視一下充值接口,結果沒有任何問題,其實用腦袋想想也知道,不可能是充值接口的問題,因為玩家根本一毛錢也沒沖,就和充值接口的一毛錢關系也沒有,好吧,那麼問題來了。。。是不是驗證出現問題了?

  翻看代碼,設定斷點

一個ajax同步與異步引發的血案。

  進入方法之後,走了741行,再進行下一步,直接執行到了754行,我去,什麼情況,這樣result的值就成了null了,後面的判斷也就不起作用了;

  就這樣調試了N遍,背景ashx檔案也檢視了,如果是背景ashx程式有問題,那麼應該走error,但是沒有走,這就說明程式根本沒有走背景,好吧,一個同步異步的思想,陡然出現在了腦海裡,于是乎,在上面這段代碼加了一句,如下:

一個ajax同步與異步引發的血案。

  斷點走起,OK,一切正常,該做的驗證都通過了,好吧,問題終于解決了。

  幸虧及時發現問題,及時解決了問題,否則,我該吃炒鱿魚了。。。

  其實隻是解決了前端問題,根本問題沒有解決,看了園友的評論,才意識到服務端沒有做驗證,慚愧,慚愧,現在已做了服務端的驗證,多謝各位園友提醒!,此處用醒目的顔色提醒自己,以後不要再犯同樣的錯誤,另一個,避免我的錯誤言論誤導了其他園友,請多諒解!(此為園友評論後新增)

知識點與總結

  1.Jquery中的ajax在預設不寫async情況下,請求為異步請求;即:async:true;

  2.如果項目中在做一項操作之前要進行ajax的驗證,無論同步或者異步,都必須在驗證通過後,方才進行其他操作。

  3.熟練應用error參數,關注傳回來的異常資訊,進而判定程式的錯誤位置;

  4.項目前端做驗證,後端也做相應的驗證;前端做驗證是為了減少伺服器壓力和增加使用者體驗,後端做驗證才是為了安全。(看各位園友的評論,新加的一條;)

  

作者:楓上善若水

出處:http://www.cnblogs.com/xilipu31/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。

正在看本人部落格的這位童鞋,我看你氣度不凡,談吐間隐隐有王者之氣,日後必有一番作為!旁邊有“推薦”二字,你就順手把它點了吧,相得準,我分文不收;相不準,你也好回來找我!