2011-12-14 11 views
0

私はこの簡単な例を使って質問を詳しく説明しました。投稿のリクエストを行ったファイルからDOMを取得する

$(document).ready(function() 
{ 
    $(#submit).click(function() 
    { 
    $var = $("#result"); 
    $code = $("#code"); 
    $.post("ajax.php", {option : $var, code: $code}, function() 
    { 
    //Getting through the DOM could be useful if you want to analyse the answer coming from the ajax.php file 
     var $DOMresponse = getElementByTagName("div")[0].firstChild.data; // I would want the correct code here because this is incorrect... this is ti give you an idea 
     if($DOMresponse == "your code is correct") 
     { 
     $("#container1").fadeOut(400, function(){ $("#container1").html(result); }); 
     $("#container1").fadeIn(); 
     } 
     elseif($DOMresponse == "your code is incorrect. Go again trough the procedure") 
     { 
     $("#container2").fadeOut(400, function(){ $("#container2").html(result); }); 
     $("#container2").fadeIn(); 
     } 
     // In this second case I could fill the second container id="container2" 
    }); 
    }); 
}); 

ajax.php例:

<?php 
if($_POST['request']==1) 
{ 
    if($_POST['code']==$user['code']) 
    { 
     ?><img src="..."> 
     <div>tomatoes</div> 
     <div>potatoes</div> 
     <div id="answer">your code is correct</div> <?php 
    } 
    else 
    { 
     ?><img src="..."> 
     <div>apples</div> 
     <div>oranges</div> 
     <div>your code is incorrect. Go again trough the procedure</div> <?php 
     } 
} 

私はajax.phpファイルのDOMを介して取得する方法を知りたい

は、Ajaxの下に次のPOSTリクエストを与えられました。

どうすればよいですか?ありがとう

答えて

0

結果をページに挿入する前にこれを行う必要がありますか?もしそうなら、新しい要素を作成し、その要素に結果を挿入します。例えば、

dom要素を持つ標準のjQueryオブジェクトがあります。

コメントへの対応:

私は混乱しています。 phpやjsでコードを検証しますか?投稿経由で送信されるものが$ user変数で定義されたものと同じであるかどうかを確認するように見えます。コードの検証はPHPで行います。その場合、応答としてjsonを使用する方が簡単ではありません。ポップレスポンスでは、response.status == 0を確認することができます。

その他の賢明なのは、PHPで一度検証してから2回応答後のjs。あなたがレスポンスを標準テキストに設定している場合は、dom要素を作成し、それを検索できるように内部に応答を配置する必要があります。

+0

あなたの答えをありがとう、私はあなたが言っていることをする必要はありません...私はする必要がありますjavascript内で "あなたのコードは正しい"または "自分のコードが間違っています"という応答を認識するためにDOMを通過します。両方の人が助言しているからです。> javascriptは応答を認識しません。javascriptは解析やckeckingなしで答えを出すだけです。これどうやってやるの? –

+0

私は尋ねたいものをより良く説明するために少し例を変更しました!お返事ありがとう –

0

私はと思います。あなたが求めていることは、ajax.phpファイルで$( '#code')の値をどう取得するかです。ここで

は何をやっているのです:

var $code = $('#code'); // jQuery object 
    $.post('ajax.php', { code: $code }); 

これに伴う問題は、あなたがajax.phpに全体のjQueryオブジェクトを渡しているということです。 、ajax.phpファイルに次に

var code = $('#code').html(); // if it's a non-input element 
    var code = $('#code').val(); // if it's an input 
    $.post('ajax.php', { code: code }); 

あなたの$ _POSTの[「コード」]をされます:あなたはおそらくやりたいことはそうのように、$(「#コード」)オブジェクトの値やHTMLを渡していますコードの値と同じです(例えば "ABC123")。これを$ user ['code']などと比較するのに使うことができます。

問題を正しく理解していただければ幸いです。がんばろう。

編集:私はあなたが今何を得ているのか理解していると思います。

HTML::

Javascriptを:

var $option = 'request'; 
    var $code = $('#code').val(); 
    $.post('ajax.php', { option: $option, code: $code }, function(data) { 
     if (data == 'valid') { 
      // show valid code result here 
     } else { 
      // show invalid code result here 
     } 
    }); 

とAjax何がやりたいことはこれです。PHP変数データという機能(データ)の$ .postパラメータの一部から来

<? if ($_POST['option'] == 'request') { 
      if ($_POST['code'] == '123ABC') { 
       echo 'valid'; 
      } else { 
       echo 'invalid'; 
      } 
     } 
    ?> 

注意してください。そのデータ変数にはajax.phpの応答が含まれています(私の例では、「有効」となります)。

+0

あなたの答えはありがとうございます。私はDOMを介して行きたいです... var response = getElementsByTagName( "div")[0] .firstChild.data;出力は「あなたのコードは正しい」または「あなたのコードは間違っています」となります。 DOMを通過する必要がある...これは単純な例なので、ここでロジックを検索しないでください。 –

+0

私は少し質問を変えて、私が尋ねたかったことをより良く説明しました!ありがとう –

+0

あなたの例では、いくつかのdivやhtmlタグ要素を扱わないので、あなたはそれらをつまずきました。それは、DOMが意味するところです。答えは文字列だけではなく、複数のdivになる可能性があるため、具体的なdivや具体的な答えを見つける方法を探しています。私は再び私の例を更新しました。 –

関連する問題