2009-08-11 51 views
4

我在社交網絡上的評論系統上工作,我正在使用jquery,我可以用ajax發表評論但沒有問題,但有時我需要用戶提交驗證碼錶單如果他們張貼太多評論或其他原因。如何處理jquery ajax評論和驗證碼

我認爲最好的辦法是將它添加到當前的評論發佈部分,如果php腳本返回一個響應,說明我們需要做一個驗證碼錶單,那麼我想自動打開一個在屏幕上顯示對話窗口,讓用戶填寫驗證碼錶格,然後進行評論。

這對我來說有些複雜,但我認爲大部分工作已經完成,或許您可以閱讀我的評論,並幫助我瞭解驗證碼部分,主要是關於如何觸發對話框打開,如何通過註釋值/經過驗證碼的文字和回評backen再次sucess並且如果用戶得到驗證碼錯誤,那麼將刷新驗證碼

$.ajax({ 
    type: "POST", 
    url: "processing/ajax/commentprocess.php?user=", 
    data: args, 
    cache: false, 
    success: function (resp) { 
     if (resp == 'captcha') { 
      //they are mass posting so we need to give them the captcha form 
      // maybe we can open it in some kind of dialog like facebox 
      // have to figure out how I can pass the comment and user data to the captcha script and then post it 
     } else if (resp == 'error') { 
      // there was some sort of error so we will just show an error message in a DIV 
     } else { 
      // success append the comment to the page 
     }; 
    } 
}); 

回答

5

我想我會選擇使用modal dialog that comes with the jQuery UI library。然後,我會將AJAX調用包裝在一個函數中,以便遞歸調用它。我會創建一個DIV(#captchaDialog)處理顯示Captcha圖像和一個輸入(#captchaInput)以輸入答案。當用戶點擊模式對話框中的確定按鈕時,我會用新的驗證碼響應修改原始參數並調用該函數。由於此解決方案只是修改原始參數並將其重新複製到相同的URL,因此我相信此解決方案將適用於您。

一些示例代碼,減去股利和輸入的模態對話框:

var postComment = function(args) { 
    $.ajax({ 
     type: "POST", 
     url: "processing/ajax/commentprocess.php?user=", 
     data: args, 
     cache: false, 
     success: function (resp) { 
      if (resp == 'captcha') { 
       $("#captchaDialog").dialog({ 
        bgiframe: true, 
        height: 140, 
        modal: true, 
        buttons: { 
        ok: function() { 
         args.captchaResponse = $(this).find("#captchaInput").val(); 
         postComment(args); 
        } 
        } 
       }); 
      } else if (resp == 'error') { 
       // there was some sort of error so we will just show an error message in a DIV 
      } else { 
       // success append the comment to the page 
      }; 
     } 
    }); 
}; 

希望這有助於!

0

邊想:

爲了獲得最佳的用戶體驗,我會非常考慮實施反向驗證碼:

http://www.ccs.uottawa.ca/webmaster/reverse-captcha.html

我明白這並沒有解決你的問題的需求,但我不得不在至少提到這一點。這是一種垃圾郵件預防方法,不需要代表用戶輸入任何內容。

+0

你必須在校園內才能瀏覽此頁 :( – Iznogood 2010-06-28 20:39:46