2009-08-11 7 views
0

私はjqueryとajaxを使ってコメントシステムを作ろうとしていますが、あまりにも頻繁に投稿しているときにcaptchaイメージを入力する必要があることがあります。バックエンドのスクリプトは、ユーザーがキャプチャを入力する必要があることを伝えるとき、私は開くには、このボックスをトリガしていますjquery ajax投稿は1つ以上の変数を返すことができますか?

私はjqueryのためfaceboxプラグインを使用していますが、ポップアップの種類]ダイアログボックスで、
は、それはその後、ポップアップ表示します画面にphpのcaptchaファイルを読み込みます。

これは私が問題を抱えている場所です。キャプチャを開くだけでなく、隠しフォームフィールドのようにこのボックスにコメントを入力する必要があります。そのため、ユーザーが正しいキャプチャコードを入力すると、コメントを投稿します。それ以外の場合は、キャプチャを承認してから何も起こりませんので、コメントを投稿する必要があります。また、彼らがcaptchaを間違って取得した場合、私は最初の部分を働かせることができれば、それはまだ簡単にそこにコメントを持って再度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には、成功(真/偽)、理由/メッセージ(文字列)、必要なその他の値の値を含むレスポンスオブジェクトを返すことができます。次に、あなたのコードでは、チェックすることができ:

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

をPHP経由でJSONを返すために、次のリンクを参照してください。右のトラックが上にあるthatsのようなhttp://us2.php.net/manual/en/book.json.php

+0

[OK]を音を。だから私の処理スクリプトでは、PHPでjson_encodeを使うことができるので、json文字列としてjqueryに送り返します。ここでは、それを自分の変数に戻す必要があります。 – JasonDavis

+0

ここでプラグインを使うことができます:http://json.org/json2.js - これは実際のjQueryプラグインではなく、John Resig(jQueryの作成者)が使っているものです。 – Fooberichu

関連する問題