form submit POST ทางไหนได้บ้างครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา form submit POST ทางไหนได้บ้างครับ

form submit POST ทางไหนได้บ้างครับ
สวัสดีครับ ก่อนอื่นขอบคุณมากๆ สำหรับ callback ครับ วันนี้มีมาอีกแล้วครับ อิอิ ผมต้องการส่งค่า form แบบ POST แบบนี้ครับ เจ้า ajax ตัวนี้จะทำงานโดยการเช็คค่า callback URL จากกระทู้ที่แล้ว โดยทำงานแบบ auto ซึ่งถ้า callback ที่ส่งกลับมาเป็น success ซึ่งมีค่าเท่ากับ 100 จะทำการส่งค่าในหน้า form แบบ post ครับ ซึ่งเดิมทีผมทำเป็นแบบกดปุ่มโดยใช้ แบบที่2 ครับ แต่ทีนี้เปลี่ยนมาเป็นแบบที่ 1 ซึ่งเช็ค auto ครับ จากการลองใช้ .submit() มันจะทำให้ครับ แต่ว่า ajax ก็จะทำงานตลอดแม้ว่าเปลี่ยนหน้าไปแล้วก็ตาม เพราะ function PHP ยังคงทำงานตลอดเพราะค่าที่ตอบกลับมาจาก sever เป็น 100 มันจะไม่เปลี่ยนค่า response จนกว่า user จะร้องขอไปใหม่ครับ

แบบที่ 1 AUTO
setInterval(function(){
     $.ajax({
          type: 'POST',
          url: 'https://demo.co.th/index.php/officer/check_tranfer',
          context: this,
          success: function(data) {
               if(data=='100'){
                    $("#hideAlert").hide();
                    $("#hideAlert2").show();
                    $("#hideLoading2").show();
                    ***//คำสั่ง submit ส่งค่า form***
               }else if(data=='419'){
                    $("#hideAlert").hide();
                    $("#hideAlert3").show();
                    $("#hideLoading").show();
                    setTimeout(function(){ window.location = "https://demo.co.th/index.php/officer/tranfer"; }, 3000);
               }else if(data=='420'){
                    $("#hideAlert").hide();
                    $("#hideAlert4").show();
                    $("#hideLoading").show();
                    setTimeout(function(){ window.location = "https://demo.co.th/index.php/officer/tranfer"; }, 3000);
               }else{
                    $("#hideAlert").show();
               }
}
});
}, 5000);

แบบที่ 2 กดปุ่ม
$('form').submit(function() {
     $.ajax({
     type: 'POST',
     url: 'https://demo.co.th/index.php/customer/check_tranfer',
     context: this,
     success: function(data) {
          if(data=='100'){
               $("#hideAlert").hide();
               $("#hideAlert2").hide();
               this.submit();
          }else if(data=='419'){
               $("#hideAlert2").hide();
               $("#hideAlert").show();
               $("#hideLoading").show();
               setTimeout(function(){ window.location = "https://demo.co.th/index.php/customer/tranfer"; }, 3000);
          }else{
               $("#hideAlert").hide();
               $("#hideAlert2").show();
          }
}
});
return false;
});


Aong35258 27-04-2016 11:22:50

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
 ไม่เข้าใจว่าทำอะไร


ninenik 27-04-2016
 ความคิดเห็นที่ 2
เป็นระบบโอนเงินครับ พอเรากดโอนเงินจากเว็บ มันจะวิ่งไปที่โทรศัพท์ ถ้าโทรศัพท์กด submit มันจะส่งค่า 100 กลับมา แต่ถ้ากด deny มันจะส่งค่าอื่นกลับมาครับ ที่นี้พอเรากดโอนเงินเสร็จแล้ว ผมก็ให้มันขึ้นหน้า page หนึ่งขึ้นมาเพื่อรอให้ user ไปกดที่โทรศัพท์ครับ ตอนรอนี่เองที่เจ้า ajax แบบที่ 1 จะทำการเช็คทุกๆ 5 วินาที เพื่อเช็คว่า user กด submit หรือ deny ทีนี้ถ้ากด deny มันไม่มีปัญหาครับเพราะผมใช้ windpwn.location มันก็ไปโหลดหน้าใหม่ปกติ แต่ถ้ากด submit มันจะส่งค่าจาก form ไป ซึ่งเมื่อ user กด submit แล้วมันตอบค่ากลับมาเป็น 100 ใช่ไหมครับ เจ้า ajax มันไม่ยอมหยุดทำงาน มันกลับทำงานอยู่เรื่อยๆครับ ซึ่งทำให้มั่วไปหมดเลย นั่นคือปัญหาครับ


aong35258 27-04-2016 11:58
 ความคิดเห็นที่ 3
แล้วแบบเดิมไม่ดีกว่าหรอ ทำงานก็น่าจะคล้ายกัน 


ninenik 27-04-2016
 ความคิดเห็นที่ 4
ปัญหาอยู่ที่เจ้านายเลยครับ มิใช่กระผม 


aong35258 27-04-2016 13:07
 ความคิดเห็นที่ 5
ตัวอย่าง ทุกครั้งหลังสองวินาทีเมื่อโหลดหน้านี้ ตัวอย่างจะทำงาน





ลองดูแนวทางประยุกต์นี้เป็นแนาวทาง
ทำฟอร์ม ซ่อนปุ่ม แล้วให้ submit อัตโนมัติ
ตัวอย่างจะเป็นการ ส่งค่า 1- 6 ตามเงื่อนไขเช็ควินาที
 
ajax_return.php

<?php
header("Content-type:text/html; charset=UTF-8");          
header("Cache-Control: no-store, no-cache, must-revalidate");         
header("Cache-Control: post-check=0, pre-check=0", false); 
$s = date("s");
if($s<=10){
	echo 1;
}elseif($s<=20){
	echo 2;	
}elseif($s<=30){
	echo 3;	
}elseif($s<=40){
	echo 4;
}elseif($s<=50){
	echo 5;	
}else{
	echo 6;	
}
exit;
?>
 
demo.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> </title>
</head>

<body>
<br />

<div style="margin:auto;width:700px;">
<form id="myform1" name="myform1" method="post" action="">
  <input name="data1" type="hidden" id="data1" value="1">
  <input type="submit" name="btn_submit" id="btn_submit" value="Submit" style="visibility:hidden;">
</form>

<pre class="place_show">

</pre>

<br />
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>      
<script type="text/javascript">
$(function(){  

// ตั้งเวลาให้ปุ่ม sumit กดเองอัตโนมัติใน 2 วินาที
	setTimeout(function(){
		$("#btn_submit").trigger("click");					
	},2000);
	
	// เมื่อฟรอืฒเริ่มส่งค่า
	$("#myform1").submit(function(){
		$.post("ajax_return.php",$(this).serialize()
		,function(data){
			$(".place_show").html(data); // ทดสอบแสดงค่าที่กลับมา
			if(data<6){ // ถ้าค่าที่กลับมายังไม่เป็นไปตามเงื่อนไข
				setTimeout(function(){ // ตั้งเวลาให้ปุ่ม กดเองอัตโนมัติใน 2 วินาที
					$("#btn_submit").trigger("click");					
				},2000);
			}else{
				alert("Finished");	
			}
		});
		return false;
	});

});
</script>


</body>
</html>


ninenik 27-04-2016
 ความคิดเห็นที่ 6
ได้แล้วครับ ขอบคุณมากๆ ครับ


aong35258 27-04-2016 15:27
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ