2009-08-11 70 views
0

我想用jquery和ajax做一個評論系統,有時我需要用戶輸入一個驗證碼圖片,當他們發佈太頻繁時。jquery ajax post可以返回多於1個變量嗎?

我使用了與jQuery的facebox插件是一個彈出式對話框,
我觸發這個盒子打開,當後端腳本告訴它的用戶需要輸入驗證碼,它就會彈出並在屏幕上加載php captcha文件。

這是我遇到麻煩的地方,我需要該框不僅打開驗證碼,還要將註釋填充到此框中,類似於隱藏的表單域,以便如果用戶輸入正確的驗證碼,它會發表評論,否則,他們正在批准驗證碼,然後什麼都不會發生,所以我需要發表評論。另外,如果他們得到錯誤的驗證碼,那麼我需要重新加載驗證碼,並且仍然有評論,如果能夠讓第一部分工作,應該很容易。

這是我的代碼到目前爲止這部分,任何人都可以幫忙嗎?

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: args, 
    cache: false, 
    success: function (data) { 
     // there was an error so we will show an error message 
     if (data == 'error') { 
      alert(data); 
      //we need the user to submit a captcha to post there data 
     } else if (data == 'captcha') { 
      jQuery.facebox(function() { 
       jQuery.facebox({ 
        ajax: 'captchabox.php' 
       }) 
      }) 
      //everything is all good, let post there comment 
     } else { 
      $('#comments').prepend(data); 
      $(this).remove(); 
     }) 
    }; 

    // remove loading image 
    $('#load').fadeOut(); 
} 
}); 

回答

2

是的,但它比jQuery本身更依賴於發佈內容;也就是說您正在使用的頁面或Web服務進行處理。作爲服務調用(使用JSON或XML),數組或單個響應的結果,您可以返回一個複雜對象。

在您的process.php上,它可能會返回一個響應對象,其中包含成功值(true/false),reason/message(字符串)以及您可能需要的任何其他數量的值。然後在你的代碼,你可以檢查:

if (data.Success) { /* code here */ } else { ... } 

請參考以下鏈接,通過PHP返回JSON:http://us2.php.net/manual/en/book.json.php

+0

好吧聽起來像多數民衆贊成在正確的軌道上。因此,在我的處理腳本中,我可以在php中使用json_encode,然後將其作爲json字符串發回給jquery,在這裏我需要將它分解回它自己的變量,你知道我該怎麼做嗎? – JasonDavis 2009-08-11 13:57:53

+0

你可以在這裏使用插件:http://json.org/json2.js - 這不是一個直接的實際jQuery插件,而是一個John Resig(jQuery創建者)建議使用的插件。 – Fooberichu 2009-08-11 16:28:56