ホームページ  >  記事  >  バックエンド開発  >  Web開発段階のまとめ(4) JSとPHP間のビッグデータ通信

Web開発段階のまとめ(4) JSとPHP間のビッグデータ通信

WBOY
WBOYオリジナル
2016-06-23 13:50:09796ブラウズ

Web 開発の前段階のまとめ (3) では、JS と PHP 間の直接呼び出しは多くの場合不便を引き起こし、一度に 1 つのデータ結果しか送り返せないことがわかりました。 ajaxメソッドを利用することで、JSはphpで送信される大量のデータを一度に読み込むことができます。フォームを送信することで、PHP は大量の JS データを一度に読み取ることができます。

1. AJAX メソッドを借用して、php を通じてデータベースを読み取り、Web クライアントに大量のデータを表示します。

a. ページがロードされたらすぐに関数 Gett() を実行します。コードは次のとおりです:

<html><head><meta http-equiv="Content-Type" content="text/html; charset="gb2312"><title></title><script language="JavaScript" src="javascript.js"></script><script language="JavaScript">function Gett(){		  		if (window.XMLHttpRequest)		  {		  // code for IE7+, Firefox, Chrome, Opera, Safari		   xmlHttp=new XMLHttpRequest();		   var url="responsexml.php";			   xmlHttp.open("GET",url,false);		   xmlHttp.send(null);		  xmlHttp.onreadystatechange=getValue(xmlHttp);		   					  }	else		  {		  // code for IE6, IE5		     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");		     var url="responsexml.php";		  			 xmlHttp.onreadystatechange=function()			  {				if (xmlHttp.readyState==4  && xmlHttp.status==200)					{					    xmlDoc=xmlHttp.responseXML; 						nodes=xmlDoc.documentElement.childNodes;						InputVoltage.innerHTML = nodes.item(3).text;						OutputVoltage.innerHTML = nodes.item(7).text;						OutputMinVoltage.innerHTML = nodes.item(34).text;						 OutputMaxVoltage.innerHTML = nodes.item(33).text;						Frequency.innerHTML = nodes.item(13).text;								xmlHttp = null;					}						  }			  			 xmlHttp.open("GET",url,true);			 xmlHttp.send(null);		 		  }		  } </script></head><body onload="Gett()"><p> </p><div align="center"><br>  <table width="75%" border="0" cellspacing="0">    <tr>      <td width="25%" nowrap><br>        <table width="75%" border="0" align="center" cellspacing="0">          <tr>            <td width="50%" nowrap>InputVoltage</td>            <td width="50%" height="22" nowrap>               <span id='InputVoltage'></span> V            </td>          </tr>          <tr>            <td nowrap>Frequency</td>            <td nowrap>              <span id='Frequency'></span> Hz            </td>          </tr>        </table></td>      <td width="50%" nowrap>		<div align="center">	</div></td>      <td width="25%" nowrap>	  	<table width="98%" height="100" border="0" cellspacing="0">          <tr>            <td width="50%" nowrap>OutputVoltage</td>            <td width="50%" height="22" nowrap>              <span id='OutputVoltage'></span> V            </td>          </tr>          <tr>            <td nowrap>OutputMaxVoltage</td>            <td height="22" nowrap>              <span id='OutputMaxVoltage'></span> V            </td>          </tr>          <tr>            <td nowrap>OutputMinVoltage</td>            <td height="22" nowrap>              <span id='OutputMinVoltage'></span> V            </td>          </tr>		  </div></body></html>
b. サーバー側でデータベースの内容を 1 次元配列に変換し、 XML形式で保存します。

すごいです


完全なコードのダウンロード: http://download.csdn.net/detail/aba13579/7877307






2. form メソッドでは、PHP サーバー側で $_GET() または $_POST() を使用して大量のデータを取得し、データベースに書き込みます。

a. を通じて、データを PHP サーバーにアップロードします。

<?php     $dbh = new PDO("sqlite:upsdata.dat", null, null);  	    $sth = $dbh->query('SELECT * FROM t_ups_rundata');		 $result = $sth->fetchAll();	 $i=0;	 $CountArray=0;	 foreach($result[0] as $x=>$x_value)	 		{							   if($i%2==0)			    {														$UPSData[$CountArray++]=$x_value;				}					$i++;			}header('Content-Type: text/xml');echo "<?xml version='1.0' encoding='utf-8'?>";echo "<upsdataxml>";    echo	"<protocol_id>$UPSData[0]</protocol_id>";echo    "<curr_time>$UPSData[1]</curr_time>";echo 	"<input_phase>$UPSData[2]</input_phase>";echo    "<inputvol_a>$UPSData[3]</inputvol_a>";	 echo    "<inputvol_b>$UPSData[4]</inputvol_b>";	 echo    "<inputvol_c>$UPSData[5]</inputvol_c>";	 echo 	"<output_phase>$UPSData[6]</output_phase>";echo    "<outputvol_a>$UPSData[7]</outputvol_a>";  echo    "<outputvol_b>$UPSData[8]</outputvol_b>";  echo    "<outputvol_c>$UPSData[9]</outputvol_c>";  echo 	"<output_load>$UPSData[10]</output_load>";echo 	"<batt_total_vol>$UPSData[11]</batt_total_vol>";echo	"<batt_cap>$UPSData[12]</batt_cap>";echo	"<input_fre>$UPSData[13]</input_fre>";echo	"<ups_model>$UPSData[14]</ups_model>";echo	"<ups_manufactory>$UPSData[15]</ups_manufactory>";echo	"<ups_ver>$UPSData[16]</ups_ver>";echo	"<rate_vol>$UPSData[17]</rate_vol>";echo	"<rate_power>$UPSData[18]</rate_power>";echo	"<rate_fre>$UPSData[19]</rate_fre>";echo	"<rate_battvol>$UPSData[20]</rate_battvol>";echo	"<is_acfail>$UPSData[21]</is_acfail>";echo	"<is_bypass>$UPSData[22]</is_bypass>";echo	"<is_battlow>$UPSData[23]</is_battlow>";echo	"<is_upsfail>$UPSData[24]</is_upsfail>";echo	"<is_shutdown>$UPSData[25]</is_shutdown>";echo	"<is_testting>$UPSData[26]</is_testting>";echo	"<is_ups_offline>$UPSData[27]</is_ups_offline>";echo	"<e_temperature>$UPSData[28]</e_temperature>";echo 	"<e_humidity>$UPSData[29]</e_humidity>";echo	"<input_default_vol>$UPSData[30]</input_default_vol>";echo	"<batt_mon_vol>$UPSData[31]</batt_mon_vol>";echo	"<ups_temp>$UPSData[32]</ups_temp>";echo	"<output_max_vol>$UPSData[33]</output_max_vol>";echo	"<output_min_vol>$UPSData[34]</output_min_vol>";echo	"<batt_temp>$UPSData[35]</batt_temp>";echo	"<is_horn>$UPSData[36]</is_horn>";echo	"<is_ups_type>$UPSData[37]</is_ups_type>";echo	"<is_guard>$UPSData[38]</is_guard>";echo "</upsdataxml>"; $dbh = null;?>


b. PHP サーバーは $_POST() を通じてデータを取得し、データベースに書き込みます

 <html><head><meta http-equiv="Content-Type" content="text/html; charset="gb2312"><script language="JavaScript"></script></head><body>  <form name="UPSCfg"  target="id_iframe"  method="post" action="UPSCfgForm.php">       <table width="80%" border="0" cellspacing="0" class="tableNormal" >      <tr bgcolor="#0099FF">    </tr>		<tr>            <td class="tableSingularLine" width="50%" nowrap>UpsCommBaud</td>            <td  class="tableSingularLine" width="50%" nowrap>				   <select name="UpsCommBaud" size="1" type="text">								<option value="1200"						<?php						$b=2400;						if ($b==1200)							echo("selected");						?>						>1200</option>						<option value="2400"						<?php						if (($b==2400)||($b==0))							echo("selected");						?>>2400</option>						<option value="4800"						<?php						if ($b==4800)							echo("selected");						?>>4800</option>						<option value="9600"						<?php						if ($b==9600)							echo("selected");						?>>9600</option>						<option value="14400"						<?php						if ($b==14400)							echo("selected");						?>>14400</option>						<option value="19200"						<?php						if ($b==19200)							echo("selected");						?>>19200</option>						<option value="38400"						<?php						if ($b==38400)							echo("selected");						?>>38400</option>					</select> 	            		    </td>        </tr>        <tr>     <td class="tableSingularLine" nowrap>OfflineQueryTime</td>	 <td class="tableSingularLine" nowrap><input class="textEnaSty" name="OfflineQueryTime" type="text" value="1000"   size="1"> 	 </td>	</tr>		 <tr>        <td class="tableSingularLine" nowrap>OfflineQueryNum</td>        <td class="tableSingularLine" nowrap><input class="textEnaSty" name="OfflineQueryNum" type="text" value="1" size="5"></td>     </tr>    </table>	    <p>      <input class="inputButtonNormal" type="submit" name="b1" value="SubMit">             <input class="inputButtonNormal" type="reset" name="Reset" value="Cacel">    </p>    <iframe name="id_iframe"  style="display:none;" src="about:blank"></iframe> </form></body><html>





完全なコードのダウンロード: http:/ 3. AJAX メソッドを借用して、一度に 1 つのデータを PHP サーバーに渡し、一度に 1 つのデータを Web クライアントに返します。

次の Web サイトに詳しく紹介されています: http://www.w3school.com.cn/ajax/ajax_asp_php.asp ので、詳細は説明しません。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。