1

ラジオボタンがクリックされたときにグループ名='s'とグループ名='v'の値を合計したかったので、関数pieces(str、str2)を呼び出します。

問題は、ここでのajaxの実行が一度に行われるように見えることです。2番目のグループがアクティブ化されているときに1番目のグループの値を取得できない、またはその逆

これらは入力です

    <input type='radio' id='1' name='s' onclick='pieces(this.value);'  value='6'>6
    <input type='radio' id='2' name='s' onclick='pieces(this.value);'  value='12'>12
    <input type='radio' id='3' name='s' onclick='pieces(this.value);'  value='24'>24


    <input type='radio' id='11' name='v' onclick='pieces(this.value);'  value='50'>Yes
    <input type='radio' id='12' name='v' onclick='pieces(this.value);'  value='0'>No


    <div id='txtHint'>Sum will display here</div>

これが私のスクリプトです

    $(document).ready(function(){

                    $('#btn').click(function(){
                        var str1=$('input:radio[name=s]').val();
                        var str2=$('input:radio[name=v]').val();
                        pieces(str1,str2);
                    });
                    });

                function pieces(str1, str2)

                {                   
                    if (window.XMLHttpRequest)

                      {// code for IE7+, Firefox, Chrome, Opera, Safari
                      xmlhttp=new XMLHttpRequest();
                      }

                    else
                      {// code for IE6, IE5
                      xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
                      }

                    xmlhttp.onreadystatechange=function()
                      {
                      if (xmlhttp.readyState==4 && xmlhttp.status==200)
                        {               document.getElementById(txtHint).innerHTML=xmlhttp.responseText;
                        }

                      }


                    xmlhttp.open('GET','url.php?var1='+str1+'&var2='+str2,true);

                    xmlhttp.send();

                }

ここにajaxコードのリンクページがあります

    <?php

    $s = $_GET['s'];
    $v = $_GET['v'];

    if($s == 6 && $v == 50)
        echo"value";

    else if($s == 6 && $v == 0)
        echo"value";

    else if($s == 12 $v == 50)
        echo"value";

    else if($s == 12 $v == 0)
        echo"value";


    else if($s == 24 $v == 50)
            echo"value";

    else if($s == 24 $v == 50)
            echo"value";

    ?>  

助けてください。ここの初心者

4

2 に答える 2

1

いくつかの観察:

  • onclickinput要素では、1つの引数を使用して呼び出しますがpieces、その関数は2つの引数(strおよびstr2)を予期して使用します。ajax呼び出しで正しいURLを呼び出すには両方が必要です。したがって、すぐに呼び出すのではなく、次のことを行うことをお勧めします。グループおよびグループで現在選択されているオプションのpieces値を収集する関数を作成します。その後、両方の値で呼び出すことができます。strstr2svpieces
  • ajax呼び出しが正しいことを確認しましたか?リクエストは実際にサーバーに到達しますか?最近では、JavaScriptライブラリを使用してajax呼び出しを実行するのが一般的ですが、ajaxコードが正しく、複数のブラウザーで機能する場合は、それでも問題ありません。
  • 最後に、ajax呼び出しから応答を返しますが、JavaScriptコードでは使用されません。ajax応答を読み取り、値をWebページのどこかに配置する必要があります(これもJavaScriptを使用します)。
于 2012-06-30T09:40:11.780 に答える
0

ついに私は自分の質問に対する答えを得ました。これと同じ質問を思い付く人のために、ここに投稿します。

    <html>
    <head>
    <script LANGUAGE="JavaScript">

    function calc()
    {

      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }


      if (document.form.value1[0].checked)
        s = 6;

      else if (document.form.value1[1].checked)
        s = 12;

      else if (document.form.value1[2].checked)
        s = 24;

      if (document.form.value2[0].checked)
        v = 5;

      else  if (document.form.value2[1].checked)
        v = 0;

      document.getElementById("resp").innerHTML="Calculating...";
      queryPath = "CalcServ.php?value1="+s+"&value2="+v;

      xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {

          document.getElementById("resp").innerHTML=xmlhttp.responseText;

        }
      }

      xmlhttp.open("GET",queryPath);
      xmlhttp.send();


    }
    </script>
    </head>
    <body>
        <div width="320">
          <center>
            <form name="form">
            <font size="4"><strong>PHP/AJAX Calculator</strong></font><br/><br/>
               <input  onclick='calc(this.value);' id="6" type="radio" name="value1" value="6">6<br/>
               <input  onclick='calc(this.value);' id="12" type="radio" name="value1" value="12">12<br/>
               <input  onclick='calc(this.value);' id="24" type="radio" name="value1" value="24">24<br/>

               <br/>
                 <input  onclick='calc(this.value);' id="y" type="radio" name="value2" value="yes">yes<br/>
                 <input  onclick='calc(this.value);' id="n" type="radio" name="value2" value="no">no<br/>
             </form>

        <strong><font size="4" color="blue"><span id="resp"></span></font></strong>
        </center>
        </div>
          </body>

    </html>

これが呼び出されるページです

    <?php

    if ($_REQUEST["value1"] == "6" && $_REQUEST["value2"] == "5")
        $sum = 6 + 5;

    else if ($_REQUEST["value1"] == "6" && $_REQUEST["value2"] == "0")
        $sum = 6;

    else if ($_REQUEST["value1"] == "12" && $_REQUEST["value2"] == "5")
        $sum = 12 + 5;

    else if ($_REQUEST["value1"] == "12" && $_REQUEST["value2"] == "0")
        $sum = 12;

    else if ($_REQUEST["value1"] == "24" && $_REQUEST["value2"] == "5")
        $sum = 24 + 5;

    else if ($_REQUEST["value1"] == "24" && $_REQUEST["value2"] == "0")
        $sum = 24;


    echo $sum;

    ?>
于 2012-07-04T13:13:23.753 に答える