2012-03-16 7 views
1

こんにちはすべて私のプロジェクトに別の質問で戻ってきます。私は何らかの理由で立ち往生し続けます!私は今日AJAXを使い始めましたので、私の無知を許して欲しいです!大丈夫まずタイプボタンがあり、それをクリックすると番号(顧客が購入したい特定のアイテムの金額)とアイテムの名前が返されます。番号はドロップダウンリストから選択され、本の名前は入力タイプ= "hidden"から得られます。ドロップダウンリストからPHPへの番号を取得する私は私のHTMLページのヘッダーにメソッドとして設定したAJAXを使用したい。このメソッドのコードは、この時点でajaxを使ってアイテムの番号を同じPHPページに戻そうとしています。ここに方法があります。次AJAXを使用してjavascriptの値をすべて同じページのPHPに戻します

function ajax_post(myform) 
    { 
     var hr = new XMLHttpRequest(); 
     var url = "islandshop.php"; 
     var index = myform.quantity1.selectedIndex; 

     var value = document.getElementById("quantity1").options[index].value; 
     var variable = "value="+value; 

     hr.open("post", url, true); 
     hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

     hr.onreadystatechange = function() { 
     if(hr.readyState == 4 && hr.status == 200) { 
     var return_data = hr.responseText; 
     document.getElementById("status").innerHTML = return_data; 
     } 

    } 

     hr.send(variable); 
     document.getElementById("status").innerHTML = "processing data"; 


} 

私はしたいボタンを押したときのドロップダウンリストからわずか数は、PHPで私に戻ったところです。しかし、ボタンをクリックすると、カートに追加ボタンが表示され、全ページ "islandshop.php"が返されます。しかし、ページの終わりの値が少なくとも悪いわけではないので、値を返すことになります。私のフォームでは、私のボタンでajax_post()メソッドを呼び出します。

       <form method="post" action="" name="form1"> 
           <span style="color:#000"> <label       for="quantity">Quantity:</label></span> 
           <select name="quantity1" id="quantity1" onchange=""> 
            <option value="1" selected>1</option><option value="2">2</option> 
            <option value="3">3</option> 
            <option value="4">4</option><option value="5">5</option> 
            <option value="6">6</option> 
            <option value="7">7</option><option value="8">8</option> 
            <option value="9">9</option> 
            <option value="10">10</option><option value="11">11</option> 
            <option value="12">12</option> 
            <option value="13">13</option><option value="14">14</option> 
            <option value="15">15</option> 
            <option value="16">16</option><option value="17">17</option> 
            <option value="18">18</option> 
            <option value="19">19</option><option value="20">20</option> 
            <option value="21">21</option> 
            <option value="22">22</option><option value="23">23</option> 
            <option value="24">24</option> 
            <option value="25">25</option><option value="26">26</option> 
            <option value="27">27</option> 
            <option value="28">28</option><option value="29">29</option> 
            <option value="30">30</option> 
           </select> 
           <input type="hidden" name="book1" value="cape clear island: its peopleand landscape" /> 
           <input type="button" value="Add To Cart" name="submit1" onclick="javascript:ajax_post(this.form)"></button> 

           </form> 

私にはうまくいくようです。最後の部分はislandshop.phpページの最後のphpタグです。ここで値を試して印刷し、ページ全体のコピーを取得します。私のページはブラウザに2回表示されます。ページの2番目のバージョンの値を使用します。

<?php 

if(isset($_SESSION['username'])) 
{ 
echo 'Thank you you selected '. $_POST['value']; 
} 

?> 

私はこのページ「islandshop.phpとしてhr.open()のURLを持っているとして、私はボタンを押したときにIMが戻ってページ全体を取得し、なぜ私は知っていると思う。私はこれについて何かを読んで、それが何かを言いました値をブラウザに送ってから、ブラウザが元のページにリダイレクトする.phpページに変数を送り返しましたが、それはうまく説明されませんでした。本当に私の主な目標は、ドロップダウンリストから値を取得することです私はPHPフォームのサーバーから私にこのページのものをする価値を使うことができます!助けを借りてもう一度お礼を言います。 AJAXの良い本や記事が喜ばれるだろう!歓声

+0

いつ 'username'セッション変数が設定されていますか?上記のHTMLは 'islandshop.php'からのものです。あなた自身にポストバックしていますか? –

+0

ああ、これは私がユーザーのログイン時に設定したものです!それが可能な場合、それを自分自身に戻そうとしているのですか? probではない。ドロップダウンリストから値を取得してサーバーに送信し、それらをPHP値として返します。多分間違った木を完全に吠えているのかもしれない! – eoin

+0

私は自分自身にドロップダウンリストから値を投稿しようとしています!ごめんなさい! – eoin

答えて

1

あなたが同じページに戻って投稿しているなら、あなたは$_POST['value']が設定されているかどうかを確認するために、条件のチェックを行うことができます。それがエコーを行い、そうでなければhtmlを表示します。

<?php 
if(isset($_SESSION['username']) && isset($_POST['value'])) 
{ 
    echo 'Thank you you selected '. $_POST['value']; 
} 
else 
{ 
?> 
    <form method="post" action="" name="form1"> 
     <span style="color:#000"> 
     <label for="quantity">Quantity:</label></span> 
          <select name="quantity1" id="quantity1" onchange=""> 
           <option value="1" selected>1</option><option value="2">2</option> 
           <option value="3">3</option> 
           <option value="4">4</option><option value="5">5</option> 
           <option value="6">6</option> 
           <option value="7">7</option><option value="8">8</option> 
           <option value="9">9</option> 
           <option value="10">10</option><option value="11">11</option> 
           <option value="12">12</option> 
           <option value="13">13</option><option value="14">14</option> 
           <option value="15">15</option> 
           <option value="16">16</option><option value="17">17</option> 
           <option value="18">18</option> 
           <option value="19">19</option><option value="20">20</option> 
           <option value="21">21</option> 
           <option value="22">22</option><option value="23">23</option> 
           <option value="24">24</option> 
           <option value="25">25</option><option value="26">26</option> 
           <option value="27">27</option> 
           <option value="28">28</option><option value="29">29</option> 
           <option value="30">30</option> 
          </select> 
          <input type="hidden" name="book1" value="cape clear island: its peopleand landscape" /> 
          <input type="button" value="Add To Cart" name="submit1" onclick="javascript:ajax_post(this.form)"></button> 

          </form> 
<?php } ?> 
+0

はい、それはページ全体の重複コピーと共に値を返していますか?ので、本質的に私は私のブラウザで2回ページを持っています。 $ _POST ['value'];ページ全体を返します。値1を選択していただきありがとうございます(または、私が選択した値)。重複したページの最後にその値を返しています。その奇妙なことは分かっています。 – eoin

+0

これはあなたのために働かないのですか? –

+0

うまくいった!なぜそう思う? – eoin

0

私は強くあなたがjQueryのを見てみることをお勧め:http://jquery.com/

+1

歓声!私は今それを見てみましょう! – eoin

+0

また、knockoutjs – deltree

+0

もちろん、iamはphp、javascript、html、cssを同時に学習しています。もし私がちょうどajaxでそれをすることができれば私はおそらくもっと幸せだろう – eoin

関連する問題