1

まず第一に、私の英語で申し訳ありません...

  • 「func 0」はajaxです。
  • 「func 1」は、1000 ミリ秒ごとに ajax コードを更新するコードです。コードが機能したら、refesh.php ページを更新し、そのテキストを「bbb」div に送信します。
  • 「func 2」は、メンバーがテキストを書き込み、次にテキストを send.php ページに送信し (テキストを mySQL に送信)、「aaa」div にテキストを表示するコードです。

誰かがコードが機能しない理由を理解するのを手伝ってくれますか?

  • 「func 0」と「func 1」だけをページに入れると、すべてうまくいきます。
  • 「func 0」と「func 2」だけをページに入れると、すべてがうまく機能します。
  • しかし、3つの機能すべてをページに配置すると、機能しません。メンバーがテキストを送信しようとしたときに、そのテキストを mySQL に送信する理由はわかりません (機能 2) が、 "aaa" div (機能 2)のrefresh.php (機能 1)からのテキストを表示する代わりに、メンバーが「aaa」div に送信するテキスト。

問題が何であるかを理解していただければ幸いです。説明するのが少し難しかったです。


これはコードです:

<!--- func 0 --->
<script>
function refresh(name, url, info, type)
{
var str;
if (type=="send") {
str = document.forms["aaa"]["txt"].value;
}
if (type=="send" && str=="")
  {
  document.getElementById(name).innerHTML="";
  return;
  } 
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(name).innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET",url+"?info="+str,true); // send the text to page
xmlhttp.send();  
return false;
}
</script>
<!--- end - func 0 --->


<!--- func 1 --->
<script type="text/javascript">
setInterval("refresh('bbb', 'refresh.php', '', 'refresh')", "1000");
</script>
<div id='bbb'> div to refresh at 1000 ms </div>
<!--- end - func 1 --->


<!--- func 2 --->
<form name='aaa' onsubmit="return refresh('aaa', 'send.php', '', 'send');" method='post'>
txt: <input type='text' name='txt' autofocus='autofocus'> <input type='submit' value=' send '>
</form>
<div id='aaa'> div that <b>*send*</b> txt to sql </div>
<!--- end - func 2 --->
4

2 に答える 2

0

xmlhttpグローバル変数が 1 つしかないためです。両方の関数をページに配置すると、2 つの要求を並行して送信しようとして干渉する可能性があります。ローカル変数にします。

var xmlhttp = …
于 2013-07-30T10:55:51.330 に答える