สอบถามหน่อยนะคับว่า จะมี solution แก้ไขในกรณีนี้อย่างไรคับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามหน่อยนะคับว่า จะมี solution แก้ไขในกรณีนี้อย่างไรคับ
function checkDateInPromotionPeriod(){
var x ;
$.post(URL,Data,
function(callback){
if(callback.result == 'true'){
alert(" กรุณาตรวจสอบ rn • ช่วงเวลาโปรโมชั่นที่ระบุถูกกำหนดในรายการโปรโมชั่นอื่นแล้ว !");
x = false;
}else if(callback.result == 'false'){
x = true;
}
},'json')
return x ; // ปัญหาอยู่ตรงนี้คับ
}
ประเดิมด้วยการสอบถามนะคับ (jQuery ผมค่อนข้างจะใหม่จริงๆ)
คือฟังก์ชั่นที่ผมเขียนนี่ทำงานปรกตินะคับ แต่สิ่งที่มันขาดอย่างนึงคือตัวฟังก์ชั่นเองมันไม่สามารถรับค่า
จากในฟังก์ชั่น $.post() ออกมาเพื่อให้ checkDateInPromotionPeriod() ทำการ return ค่าเพื่อนำไปใช้งานอย่างอื่นต่อได้น่ะคับ
คือจะ return ค่า true/false ตามปรกติ
ผลลอง set ค่าใน callback ที่ส่งมาได้นะคับ แต่พอภายนอก $.post() กลับอ้างอิงถึงมันไม่ได้ ตรงนี้ผมรบกวน
สอบถามหน่อยนะคับว่า จะมี solution แก้ไขในกรณีนี้อย่างไรคับ

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

ก่อนอื่นให้ลองเอาตัวแปร var x; ไว้นอกฟังก์ชันดูก่อน ถ้าไม่ได้ อ่านต่อข้างล่าง
ลองดูที่ความต้องการเป็นหลัก คือ ถ้าต้องการแค่ การ return ค่ากลับมาเป็น true หรือ false แล้วเอาค่าไปตรวจสอบ แนะนำการใช้งานเป็นแบบ
$.ajax();
https://www.ninenik.com/jquery-manual/api/jQuery.ajax.html
ซึ่งเป็นรูปแบบเต็ม และสมบูรณ์กว่าการใช้
$.post();
https://www.ninenik.com/jquery-manual/api/jQuery.post.html
ตัวอย่างการใช้ $.ajax ตรวจสอบข้อมูลอย่างง่าย
1 2 3 4 5 6 7 8 9 10 | <script type= "text/javascript" > function testFunc(){ var returnVal=$.ajax({ url: "test.php" , data: "check=1" , async: false }).responseText; return returnVal; } </script> |
ไฟล์ test.php
1 2 3 4 5 6 7 8 9 10 | <?php if ( $_GET [ 'check' ]!= "" ){ if ( $_GET [ 'check' ]==1){ echo "1" ; } else { echo "0" ; } exit ; } ?> |
แต่กรณีจำเป็นต้องใช้เป็นไฟล์ json ก็สามารถใช้ $.ajax() แทน $.post ได้เหมือนกัน
และยังครอบคลุม รวมทั้งสามารถประยุกต์ใช้เพิ่มเติมได้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <script type= "text/javascript" > function checkDateInPromotionPeriod(){ var callback; var x; callback=$.ajax({ type: 'POST' , url: URL, data:Data, dataType: 'json' , async: false }).responseText; callback=eval( '(' + callback + ')' ); if (callback.result == 'true' ){ alert( "กรุณาตรวจสอบ rn ช่วงเวลาโปรโมชั่นที่ระบุถูกกำหนดในรายการโปรโมชั่นอื่นแล้ว !" ); x= false ; } else if (callback.result == 'false' ){ x= true ; } return x; } </script> |
