การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์ javascript

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์ javascript

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย dev24x7 » 13/07/2012 3:08 am

รบกวนขอ link รายละเอียดที่บอกว่า "AJAX... Serialize (name1=val1&name2=val2&...)" หน่อยครับ สนใจตัวนี้ครับ ขอบคุณล่วงหน้าครับผม

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย fa12mkungz » 30/05/2012 5:13 pm

คือเอาดึงค่ามาด้วยอีกชุดนึง แต่ซ่อนไว้ แล้วนำมาเทียบใช่มั้ยครับ

ขอบคุณครับ

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย mindphp » 30/05/2012 5:02 pm

ตอนดึงข้อมูลเก่ามาใส่ใน form เพื่อแก้ไข
เก็บค่าเก่าใส่ใน hidden field ของแต่ละตัวไว้ด้วย ก่อน ส่งก็เช็คค่าใน input filed ที่เปิดให้ user แก้ไข กับ hidden field แต่ละตัว ถ้าไ่ม่เท่ากันก็ให้ ajax ส่งไป

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย fa12mkungz » 30/05/2012 4:51 pm

ใช้ ajax ครับ คือ ถ้ามีรายละเอียดหลายๆช่อง ผมอยากส่งไปบางส่วนที่เปลี่ยนแปลงอะครับ จะรู้ได้ยังไงว่ามันไม่ใช่ข้อมูลเก่า เพราะข้อมูลที่นำมาแสดงใน textbox ตอนโหลดเพจ ผมอ้างจาก id พอใส่ข้อมูลใหม่ เหมือนมันไปทับของเก่าเลย ตอนนี้ผมเลยไม่รู้ว่าจะแยกยังไง

โค้ด: เลือกทั้งหมด

			function ajaxLoad(method,URL,data){
				ajax.open(method,URL);
				ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
				ajax.onreadystatechange = function(){
					if(ajax.readyState==4 && ajax.status==200){
						var obj = eval ("(" + ajax.responseText + ")");  // eval() can be used to convert a JSON text into a JavaScript object.
						//alert(obj.RoomID);
						document.getElementById('jRoomID').value=obj.RoomID;
						document.getElementById('jTelNo').value=obj.TelNo;
						document.getElementById('jPowerNo').value=obj.PowerNo;

โค้ด: เลือกทั้งหมด

	document.write("<tr><td>TelNo					</td><td><input name='jTelNo' type='text' id='jTelNo'></td></tr>");
				document.write("<tr><td>PowerNo				</td><td><input name='jPowerNo' type='text' id='jPowerNo'></td></tr>");
พอผมอยากจะเทียบ ไม่รู้จะเทียบยังไง

โค้ด: เลือกทั้งหมด

			function fncSubmit(){
				var var1 = document.getElementById('jRoomID').value;
				alert(var1);
                                // ผมอยากจะเทียบตรงนี้จะทำยังไงได้บ้างครับ
			}

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย touleg » 30/05/2012 4:28 pm

จากที่ดูจากความต้องการแล้ว น่าจะเป็นการแก้ไขข้อมูลใช้ไหมครับ ถ้าใช่ก็ให้ส่งค่าที่มีอยู่ใน Textbox ไปอัพเดทเลย ซึ่งจะเป็นค่าเก่าหรือใหม่นั้นไม่มีปัญหา เพราะถ้าเป็นค่าใหม่มันก็ update เปลี่ยนเป็นค่าใหม่ แต่ถ้าเป็นค่าเก่า มันก็ยังเป็นค่าเดิมถึงแม้จะอัพเดทใหม่ก็ตาม

Re: การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

โดย touleg » 30/05/2012 4:23 pm

ต้องถามว่าส่งค่าแบบไหน ระหว่าง ส่งแบบธรรมดา กับแบบใช้ ajax

- ถ้าส่งแบบธรรมดา มันจะไม่สามารถกำหนดที่ต้นทางได้ว่าจะให้ส่งอะไรไปบ้าง แต่ให้ตรวจสอบค่าที่ฝั่งรับแนว่าค่าที่ส่งมาเป็นค่าว่างไหม หรือมีค่าหรือป่าว จากนั้นก็นำอันที่มีค่าไปใช้งาน
- อีกวิธีแบบ Ajax สามารถอ่านค่าโดยใช้ Javascript ตรวจสอบได้เลยว่า textbox ไหนมีค่าบ้าง ก็ให้นำมาต่อกันเป็นแบบ Serialize (name1=val1&name2=val2&...) แล้วส่งผ่าน ajax ได้เลย จะใช้พวก Jquery หรือจะเขียนขึ้นเองก็ได้ แบบนี้ปลายทางก็ไม่ต้องเขียนตรวจสอบ แต่เป็นการตรวจสอบที่ต้นทางแทน

การส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์ javascript

โดย fa12mkungz » 30/05/2012 4:04 pm

คือผมอยากได้ตัวอย่างการส่งเฉพาะค่าที่เปลี่ยนแปลงไปยังเซิร์ฟเวอร์

สมมุติโหลดหน้าเพจมาตอนแรก textbox มีค่า 'farm' อยู่ แล้วผมเปลี่ยนโดยพิมพ์คำอื่นลงไป

พอกดส่งก็จะส่งข้อมูลใหม่ออกไป ส่วนข้อมูลใน textbox ที่เราไม่ได้ไปเปลี่ยนค่าก็จะไม่ส่งอะไรออกไปอะครับ

ข้างบน