0

ajaxを介してテーブルをフェッチする際に問題が発生しました。これが私のajax関数です:

function search() {
    var JobFunction_Id=document.getElementById("JobFunction_Id").value;
    var JobFamily_Id=document.getElementById("JobFamily_Id").value;
    var flag=0;
    var newreq=createRequest();
    if(JobFunction_Id!='' && JobFamily_Id!='') { flag=1; }    

    if(flag==1) {    
        var url=("Talent_S_New.php?JobFunction_Id="+JobFunction_Id+"&      JobFamily_Id="+JobFamily_Id);

        newreq.onreadystatechange=function() {
              alert('hi');
              if(newreq.readyState==4 && newreq.status==200) {

                   if(newreq.responseText!='') {
                       document.getElementById("display_result").innerHTML  =newreq.responseText; }
                    //else {    
                    // document.getElementById("display_result").innerHTML  =newreq.responseText;                     
                    //}
              }
        }
        newreq.open("GET",url,true);
        newreq.send();
    }
}​

このページからテーブル情報を含む出力変数をフェッチしようとしています。

echo('<table style="border:1px solid red" >');
echo('<th>');
echo('First Name');
echo('</th>');
echo('<th>');
echo('Last Name');
echo('</th>');
echo('<tr>');
echo('<td style="border:1px solid red">');

foreach($Allemp as $key=>$value) {
   if (array_key_exists('Error', $Allemp))
   {    echo($value);   }
   else
   {    echo($value["Emp_FirstName"]);  }

   //echo('</td>');
   //echo('<td style="border:1px solid red">');

   if (array_key_exists('Error', $Allemp))
   {    echo($value);   }
   else
   {    echo($value["Emp_LastName"]);   }
}
echo('</td>');
echo('</tr>');
echo('</table>');

上記のajaxがなくても、コードは正常に機能します。あなたは観察することができますalert('hi')。そのアラートを出すと、if(newreq.readyState==4 && newreq.status==200)ループに入り、結果が1秒間表示され、再び消えます。foreachループbcosに入り、アラートが5回表示され、結果が1秒間表示されて消えると思います。これを修正するアイデアはありますか?

4

2 に答える 2

1

これをjQueryとしてマークしたので、これのほとんどは次のようなものに変更できると確信しています。

var url=("Talent_S_New.php?Function_Id="+JobFunction_Id+"&JobFamily_Id="+JobFamily_Id);
$.ajax(url, {
  type: "GET",
  success: function(data, status) {
    alert("success!");
    $("#display_result").html(data); // Incoming data placed in 'display_result'
  },
  error: function(jqXHR, textStatus){
    alert("error..");
  }
});

これで問題が解決するかどうかはわかりません。しかし、あなたはそれをjQueryとしてマークしました、そして私はあなたのコードに1つのjQuery呼び出しを見ません。

于 2012-08-31T12:51:15.563 に答える
0

jQuery AJAXを使用しないのはなぜですか?

ここに例があります:

$.ajax({
  type: "GET",
  url:'Talent_S_New.php',
  data:$('form').serialize,
  complete: function() { alert('hi'); }
  success: function(data) {
      $('#display_result').html(data.responseText);
  } 
});
于 2012-08-31T12:53:10.133 に答える