DOM PHP nesneleri javascript Erişim

5 Cevap php

I have a javascript code helping me to dynamically create row after row in a table and to delete a row from that table. each row has four cells. cell 1 for instance contains a text zone. to differentiate cell1 from row 1 with cell1 from row 2, I rename my cell 1 like that cell1.name= cell1.name + '_' + row.rowIndex.

Ben tablonun satırları bir kullanıcı tarafından girilen verileri okuyabilir ki ben bir gönderme düğmesi oluşturmak ve ben $ _GET yazdırmayı deneyin. ama içinde bir şey yok. PHP nasıl benim DOM nesnelerine erişebilir?

Ben yardım için minnettarım.

Benim HTML + PHP kodu

<body >

<?php
if (isset($_GET['Enter'])){
    print_r($_GET);
}

?>

<h1> Create an Item </h1>
<form method="GET" action="func.html">
    <table align="center" border = "2" cellspacing ="0" cellpadding="3" id="table"> 
    	<tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><input type="button" Name= "Ajouter" Value="Ajouter" onclick="go()"></td></tr>

    </table>	
<input type="submit" name="submit" value="Enter">
</form> 
</body>

ve benim Javascript kodu:

<script>

   function getXhr(){
                var xhr = null; 
    			if(window.XMLHttpRequest) // Firefox and others
    			   xhr = new XMLHttpRequest(); 
    			else if(window.ActiveXObject){ // Internet Explorer 
    			   try {
    		                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		            } catch (e) {
    		                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		            }
    			}
    			else { // XMLHttpRequest not supported by your browser
    			   alert(" Your browser does not support XMLHTTPRequest objects..."); 
    			   xhr = false; 
    			} 
                  return xhr
    		}

    		/**
    		*  method called when the user clicks on the button
    		*/
    		function go(){
    			var xhr = getXhr()
    			// We defined what we gonna do with the response
    			xhr.onreadystatechange = function(){
    				// We do somthing once the server's response is OK
    				if(xhr.readyState == 4 && xhr.status == 200){
    					var body = document.getElementsByTagName("body")[0];

    				// Retrieve <table> ID and create a <tbody> element

    					var tbl = document.getElementById("table");
    					var tblBody = document.createElement("tbody");
    					var row = document.createElement("tr");

    					var cell_1 = document.createElement("td");
    					var cell_2 = document.createElement("td");
    					var cell_3 = document.createElement("td");
    					var cell_4 = document.createElement("td");

    				// Create the first cell which is a text zone	
    					var cell1=document.createElement("input");
    					cell1.type="text";
    					cell1.name="fname";
    					cell1.size="20";
    					cell1.maxlength="50";
    					cell_1.appendChild(cell1);

    				// Create the second cell which is a text area	
    					var cell2=document.createElement("textarea");
    					cell2.name="fdescription";
    					cell2.rows="2";
    					cell2.cols="30";
    					cell_2.appendChild(cell2);

    				// Create the second cell which is a combo box
    					var cell3 = document.createElement("div");
    					cell3.id="rs";
    					cell3.innerHTML=xhr.responseText;
    					cell_3.appendChild(cell3);


    				// Create the fourth cell which is a button
    					var cell4=document.createElement("input");
    					cell4.type="button";
    					cell4.value="Delete"
    					cell4.onclick=delRow;
    					cell_4.appendChild(cell4);

    				// add cells to the row
    					row.appendChild(cell_1);
    					row.appendChild(cell_2);
    					row.appendChild(cell_3);
    					row.appendChild(cell_4);

    				// add the row to the end of the table body
    					tblBody.appendChild(row);

    				// put the <tbody> in the <table>
    					tbl.appendChild(tblBody);

    				//	Rename cells with the row index			
    					var ind=row.rowIndex;
    					var liste_fname = row.getElementsByTagName("input");
    					for(i=0; i < liste_fname.length; i++)
    					{
    					   if(liste_fname[i].name == "fname") 
    					   {
    						  liste_fname[i].name = liste_fname[i].name + "_" + ind; //give fname_1, fname_2, fname_3, ...

    					   }
    					}

    					var fd = row.getElementsByTagName("textarea");
    					fd[0].name = fd[0].name + "_" + ind;

    					var cd = row.getElementsByTagName("div");
    					cd[0].id = cd[0].id + "_" + ind;

    					var selectname = row.getElementsByTagName("select");
    					selectname[0].name = selectname[0].name + "_" + ind;

    				// appends <table> into <body>
    					body.appendChild(tbl);

    				// sets the border attribute of tbl to 1;
    					tbl.setAttribute("border", "1");

    					}		
    			}

    			xhr.open("GET","fstatus.php",true);
    			xhr.send(null);
    		}
function delRow(){
    var i= this.parentNode.parentNode.rowIndex;
    document.getElementById('table').deleteRow(i);
}
   </script>

Saygılarımızla,

Cop

5 Cevap

PHP sunucu tarafı ve Javascript sayfada yapamazsın directly erişim elemanları istemci tarafında olduğu için.

Bir form veya bazı AJAX sunucuya geri göndermek için gereken unsurları erişmek için.

Bunu daha kolay DOM PHP programları aramak ve işlemek için yapar beri bu konuda yardımcı jQuery içine bakmak olabilir.

$ _GET ['Submit'] 'Enter' değeri olmalı çünkü ... başlayanlar için ['Enter'] $ _GET ['submit'] değil $ _GET ayarlanmış olup olmadığını görmek istiyorum.

Ayrıca, diğerlerinden farklı bir ad olması için TextArea ihtiyacı her böylece) onlar birbirleri üzerine yok (Yoksa onlar [] (köşeli parantez içinde biten bir isim olması gerekir ve daha sonra php bir diziye dönecek .)

PHP gerçekten şeyler ajaxy Kinf yoluyla dışında bunu erişemiyor ve html sunulduktan sonra ... DOM artık yok.

cep isim böyle adlandırılmış olmamalı ... Böyle olmalı

 <input type='text' name='username[]' value=''/>
 <input type='text' name='username[]' value=''/>
 <input type='text' name='username[]' value=''/>
..... 
<input type='submit' name='submit' value='submit'/>

so you can access from php as array of username $_GET[username][0] for example will display the first username etc ...

btw, try to use prototype or jquery (javascript framwork) it will simplify your life a lot.

ajax kullanarak Jquery kullanarak veri göndermek için:

var url = 'your.server.com/post/fstatus.php'; 
var data = $('#myform_id').serialize(); 
$.post(url, data , function(result){ 
 //... if the data was alright or submited ... 
 alert(result); 
},"json");

daha kolay değil mi? :)

basit bir türü eklemek için:

var newfield="<div id='rs'><textarea name='mytextarea'></div>"; $('#your_target_id').append(newfield);

php tip

<?php print_r($_GET); ?>

ve ne demek istediğimi göreceksiniz :)

Ben herhelde - jQuery kullanmak. Hayatın büyüklük basit bir sipariş olacaktır.

JQuery ikinci kullanımı gidiyorum. Bu tidier olmak ve bu özel görevi sırasında tek bir paradigma içinde özenle devam edeceğiz.

PHP ile Bunu yapmanın bir yolu, JSON DOM nesnesini dökümü ve sonra PHP'nin JSON desteğini kullanmak olacaktır. Sizin ihtiyaçlarınıza bağlı olarak, JSON verileri işlemek için kendi sınıf rulo veya sadece) Eğer (json_decode olsun diziden yakala. Başka bir yolu onun temsilcisi HTML içine nesneyi dökümü ve PHP komut yerine DOM nesnesine o geçmek olacaktır. Daha sonra, The Simple HTML DOM Parser kullanarak PHP için kolay kullanımlı, serbestçe kullanılabilir DOM ayrıştırıcı onu yeniden ayrıştırma edebilirsiniz.

Tabii ki, burada iki işlem adımlarını ekliyoruz dikkat etmelisiniz. Eğer dil geçmeden yapmanız gereken işlem yapabiliyorsa, size zaman ve aklı biraz tasarruf ediyoruz.