สอบถาม jquery หน่อยครับ กับการรับค่า

เริ่มโดย JumDaiDee, 01 กันยายน 2014, 17:34:21

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

JumDaiDee

สวัสดีครับ พี่ๆ โปรแกรมเมอร์

พอดีผมหาตัวอย่างที่ต้องการมาได้
แต่ติดที่ว่า เค้าไม่ทำหน้ารับค่าให้ดู
รับกวนพี่ แนะนำด้วยครับ การใช้หน้า store.php ในการรับค่ามาใช้งาน

อ้างถึง<html>
<head>
<title>Checkbox test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>

</head>
<body>

<input type="checkbox" class="messageActivated" value="msg0">

</body>

<script type="text/javascript">
$(".messageActivated").bind('click', function() {
   if($(this).attr('checked'))
   {
       $.get("store.php", { checked: 1, msgId: $(this).attr('value') } );
   }
   else
   {
       $.get("store.php", { checked: 0, msgId: $(this).attr('value') } );
   }
});
</script>
</html>
สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com

dragons_first

รับทำเว็บไซต์ ตามขอบเขตของลูกค้าราคาเบาๆ

รับแก้สคริปท์ เพิ่มระบบ เปลี่ยนแปลงเลเอาท์เว็บไซต์ จัด cssใหม่ แก้การแสดงผลผิดเพี้ยน
ท่านจะได้รับการบริการที่เป็นกันเอง ราคาไม่แพง ต่อรองได้(แต่ไม่น่าเกลียด) คุยกันฉันมิตร นะฮ๊าฟฟฟฟฟ

p44n

<?
$checked=$_GET['checked']; // value 0 หรือ 1
$msgId=$_GET['msgId']; // value msg0

//เอา $checked,$msgId ไปทำไรต่อก็ว่าไปครับ
?>
Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native

zankumuro

รับค่าแบบฟอร์มธรรมดาเลยครับ

$.get() ก็รับด้วย $_GET[]

$.post() ก็รับด้วย $_POST[]
อย่าเชื่อผมมาก ผมมันมั่ว.....ฮ่าๆ

ฝาก Like แฟนเพจหน่อยครับ
https://www.facebook.com/devsignup

ข่าวสารวงการเกมส์ ทริปทริคต่างๆ เกมส์แจกฟรี
https://www.wecanplay.in.th/

JumDaiDee

#4
เพิ่มเติมครับ ถ้าผมจะส่ง id ไปพร้อมกัน ต้องเพิ่มส่วนไหนครับ
ถ้า row ข้อมูลมาจาก db มันก็ะมี 10 ชื่อ แล้วอย่างให้ส่ง id ส่งไปด้วย ต้องทำอย่างไร ครับ

คือ ผมอยากเอาไปใช้ อัพเดท status ครับ

1 คือ id
A,D คือ status

ถ้ามี 10 ขื่อ ผมต้องเขียน javascript 10 ครั้งไหมครับ

<script type="text/javascript">
$(".messageActivated").bind('click', function() {
   if($(this).attr('checked'))
   {
       $.get("testdata.php", { checked: '1_A', msgId: $(this).attr('value') } );
   }
   else
   {
       $.get("testdata.php", { checked: '1_D', msgId: $(this).attr('value') } );
   }
});
</script>

ถ้าแบบนี้ $msgId=$_GET['msgId']; เวลา ติกออกมันก็ส่ง ค่าเดิม
ถ้าแบบนี้ $checked=$_GET['checked']; เปลี่ยนค่า เวลาติ๊ก หรือ ไม่ติก
สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com

zankumuro

แสดงว่ายังไม่เข้าใจชุดคำสั่งนี้ ไม่ต้องเขียนคำสั่งทั้ง 10 ครั้งครับ เพราะคำสั่งข้างบนนั้นเรียกใช้ $(".messageActivated") นั่นคือ ค่าตัวใดที่มีคลาสนี้ก็จะทำงาน และจะทำงานเมื่อไร ก็เมื่อทำการคลิกตามที่ได้กำหนดใน .bind('click', function(){...});

ที่ต้องทำคือเจ้า checkbox ที่จะใช้นี้ทั้ง 10 อันจะต้องระบุคลาส messageActivated ลงไปใน checkbox นั้น ตัวอย่าง


<input name="" type="checkbox" value="1" class="messageActivated">
<input name="" type="checkbox" value="2" class="messageActivated">
<input name="" type="checkbox" value="3" class="messageActivated">


ส่วนปัญหาเรื่องอยากจะส่งไอดีไปด้วยต้องทำยังไง ก่อนอื่นต้องทำความเข้าใจในส่วนการส่งค่า $.get("testdata.php", { checked: '1_A', msgId: $(this).attr('value') } );

testdata.php คือปลายทางไฟล์ที่จะส่งไป

{ checked: '1_A', msgId: $(this).attr('value') } คือข้อมูลที่จะส่งไป ซึ่งแยกเป็น ตัวแปร checked มีค่าเท่ากับ 1_A และตัวแปร msgId มีค่าเท่ากับค่าใน value ของ checkbox ที่ทำการคลิก

จากคำสั่งด้านบน checked เป็นค่า status ที่จะใช้อัพเดตแล้ว msgId ก็ควรเป็นค่า id ของข้อมูลนั้น ซึ่งจะได้ไม่ต้องส่งไปเป็น 1_A ต้องเอาไปแยกตัวแปรอีกวุ่นวาย เพราะตามความต้องการที่บอกมายังไม่เห็นว่าค่า value ใน checkbox จะใช้ทำอะไร ให้มันเป็น id ไปเลยดีกว่า


ปัญหาสุดท้าย $msgId=$_GET['msgId']; ทำไมติ๊กออกก็ยังส่งค่าเดิมไปอัพเดต


    if($(this).attr('checked'))
    {
        $.get("testdata.php", { checked: '1_A', msgId: $(this).attr('value') } );
    }
    else
    {
        $.get("testdata.php", { checked: '1_D', msgId: $(this).attr('value') } );
    }


เพราะคำสั่ง else ไงครับ ถึง checkbox ไม่ถูกเช็ค มันก็ยังให้ส่งค่าไปอัพเดต ไม่ว่า checkbox ตัวนี้จะถูกติ๊กหรือไม่ถูกติ๊ก ค่าใน checkbox ก็จะถูกส่งไปอยู่ดี เพียงแต่เปลี่ยนจากสถานะ 1_A เป็น 1_D เท่านั้นเอง


สรุปตามความต้องการที่ผมเข้าใจถ้าจะแก้ไขก็ต้องปรับเป็น

    if($(this).attr('checked'))
    {
        var status_update = 'A';
    }
    else
    {
        var status_update = 'D';
    }

    $.get("testdata.php", { checked: status_update, msgId: $(this).attr('value') } );


ค่า checked จะเท่ากับ A หรือ D ตามสถานะการติ๊กของ checkbox
ค่า msgId จะเท่ากับ value ของ checkbox นั่นก็คือ ID ของข้อมูลตามที่แนะนำในเรื่องของการส่งค่าไอดี

จากนั้นก็รับค่า checked และ msgId ไปอัพเดต ซึ่งก็มีทั้ง สถานะและไอดี น่าจะพอกับความต้องการที่ระบุมาล่ะ หากผิดพลาดตรงไหนก็ขออภัยด้วยครับ พิมพ์สดไม่ได้เทส
อย่าเชื่อผมมาก ผมมันมั่ว.....ฮ่าๆ

ฝาก Like แฟนเพจหน่อยครับ
https://www.facebook.com/devsignup

ข่าวสารวงการเกมส์ ทริปทริคต่างๆ เกมส์แจกฟรี
https://www.wecanplay.in.th/

JumDaiDee

#6
ขอขอบพระคุณ พี่ zankumuro มากครับ

ให้ข้อมูลจัดเจน อธิบายทำให้ผมจนเข้าใจ
หายากมากครับ ที่จะมีคน ให้ความรู้และยอมเสียสละเวลาอธิบายจัดชันแบบนี้
ผมขอให้พี่ zankumuro ประสบความสำเร็จในหน้าที่การงานนะครับ

ขอบพระคุณมากจริงๆ ครับ เพราะอยากได้มาหลายเดือนละครับ

ทำได้แต่เพียง
<input type="radio" name="ss" value="1_a">
<input type="radio" name="ss" value="2_d">

และผมก็กำลังพัฒนา และพยายาม ที่จะไม่ใช้ปุ๋ม submit
เพราะทำแบบนี้ มันมี 2 ปุ่ม ผมเลยคิดว่า ถ่ามีปุ๋มเดียวน่าจะดีกว่า
+1 ให้พี่ทุกคน สำหรับน้ำใจและคำแนะนำต่างๆ ขอบพระคุณครับผม

:wanwan020: :wanwan020:
สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com