2

onclick()夕方、JavaScript関数を介してこのhtmlフォームを送信すると、問題が発生したようです。これを試すのはこれが初めてで、js/ajax は初めてですが、両方の理解から、これを正しく行っています...最終的にはこれが私の目標です: ユーザーが情報を入力 - javascript/ajax は GET 要求を構築し、それを送信します-私のphpフォームは各入力フィールドを独自のクエリとして実行し、クエリが実行されるたびに、進行状況のパーセンテージをエコーし​​ます(実行する各クエリの後)-次に(ajaxを介して)そのパーセンテージをHTML5に返しますプログレス バー (新しい<prgress>タグに敬意を表します。) がプログレス バーを作成します。しかし、 1.私はこれについて間違っているかもしれないと思う 2.私がこれを行う方法はうまくいくはずです 3.私は私のロープの終わりにいます...

ここに私のjsがあります:

function reply(){
 var total = document.getElementById("setName").name;
  var firstArray = new Array();
   for(i = 1; i <= total; i++){
    firstArray[] = "i = document.getElementById(i)";
   }
  //implode firstArray for uset in $_GET
  //aparently its called join...
  var GET = firstArray.join('&');

    //need to set up xml to run php for query
     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("progressBar").innerHTML = xmlhttp.responseText;
       }
     };
xmlhttp.open("GET","ajaxQuery.php?"+GET,true);
xmlhttp.send();
}

繰り返しますが、私は js/ajax は初めてですが、PHP は使用しません。クエリの実行は問題ではなく、その部分は問題なく動作していますが、これは onclick を実行することさえできません。

補足として、私の入力フィールドは数値を名前属性として使用して、js とのやり取りを改善していますが、ここでは onclick 呼び出しを行います

<button type = "button" onClick = "reply()">Submit</button>

私はこれがずっと良くなる可能性があることを理解しています.

4

2 に答える 2

1

クエリ文字列を作成するには、次のようにする必要があります。

var firstArray = new Array(), qs;

for(i = 1; i <= total; i++){
    firstArray.push('i[]=' + encodeURIComponent(document.getElementById(i).value);
}

// i[]=123&i[]=456&...
qs = firstArray.join('&');

// ...

xmlhttp.open("GET", "ajaxQuery.php?" + qs, true);

idところで、数字で始まる属性を持つ要素は使用しないでください。

于 2013-02-05T23:18:09.887 に答える
1

あなたのコードの一部を jQuery で書き直そうとしました。それはうまくいくはずですが、私はそれをテストしませんでした:

<!--Import jQuery --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript">

    $(function() {
        $("#submitButton").click(function(){
            reply();
        })
    });

    function reply(){
        var total = document.getElementById("setName").name;
        var firstArray = new Array();
        for(i = 1; i <= total; i++){
            firstArray[] = "i = document.getElementById(i)";
        }
        //implode firstArray for uset in $_GET
        //aparently its called join...
        var GET = firstArray.join('&');     

        var jqxhr = $.ajax( {
            type: "GET",
            url: "ajaxQuery.php?"+GET
        } )
        .done(function(data) { 
            $("#progressBar").html( data );    
        });



    }
</script>

<button type = "button" id="submitButton">Submit</button>
于 2013-02-05T23:11:56.063 に答える