ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถาม jquery การ return json ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถาม jquery การ return json ครับ  (อ่าน 957 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
JumDaiDee
สมุนแก๊งเสียว
*

พลังน้ำใจ: 18
ออฟไลน์ ออฟไลน์

กระทู้: 566



ดูรายละเอียด
« เมื่อ: 14 กันยายน 2015, 22:16:28 »

พอดีผมเขียน ให้เรียกใช้ fuction อีกตัว แต่เรียกใช้งานค่าที่ return มาไม่ได้ครับ
แนะนำผมด้วยครับ พี่ๆ

โค๊ด:
$(document).ready(function(){

    $(".btn-edit").click(function()
    {
        var aaa = editTable();
        // เรียกใช้วานตัวแปร aaa อย่างไร ถึงจะได้ ค่า A จาก status ไฟล์ test.php ครับ
    });

});

function editTable()
{
    $.post('test.php', function(data)
    {
        return data;

    },'json');
}

test.php
โค๊ด:
$rows = array('status' => 'A');
        return json_encode($rows, JSON_NUMERIC_CHECK);

// เรียกใช้วานตัวแปร aaa อย่างไร ถึงจะได้ ค่า A จาก status ไฟล์ test.php ครับ
« แก้ไขครั้งสุดท้าย: 14 กันยายน 2015, 22:17:27 โดย JumDaiDee » บันทึกการเข้า

สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com
Nomkhonwaan
คนรักเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 194



ดูรายละเอียด
« ตอบ #1 เมื่อ: 15 กันยายน 2015, 14:53:54 »

ที่ฟังก์ชัน editTable เพิ่มตัวแปร callback ลงไป

โค๊ด:
function editTable(cb) {
  $.post('test.php',function(data) {
    cb(data);
  }, 'json');
}

ที่ event คลิกเปลี่ยนจาก return เป็นเรียกใช้งาน callback

โค๊ด:
// var aaa = editTable();
editTable(function(data) {
  alert(data);
});

เพราะว่า JavaScript ทำงานแบบ a-synchronize เมื่อเราเรียกใช้งาน resource ภายนอกมันจะ "กระโดดข้าม" บรรทัดที่ต้องรอการทำงานไปเลย

ในกรณีนี้คือ $.post ซึ่งต้องรอ response กลับจาก server มันเลยข้ามไปทำบรรทัดถัดไปทันที ส่งผลให้ตัวแปร aaa เป็นค่าว่าง

คำอธิบายเพิ่มเติมครับ

http://stackoverflow.com/quest...ax-call-success#answer-5316805

 wanwan017
บันทึกการเข้า
Nokky@#
ก๊วนเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 216



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 15 กันยายน 2015, 15:16:40 »

ผมว่า document.ready เกิดก่อน ajax success ครับ

วิธีคือต้องใส่โค้ดที่จะรับค่าจาก ajax ไว้ใน

$.post('test.php', function(data)
    {
        return data; //ใส่โค้ตตรงนี้

    },'json');

บันทึกการเข้า

JumDaiDee
สมุนแก๊งเสียว
*

พลังน้ำใจ: 18
ออฟไลน์ ออฟไลน์

กระทู้: 566



ดูรายละเอียด
« ตอบ #3 เมื่อ: 15 กันยายน 2015, 19:43:24 »

ทำได้แล้วครับ ขอบพระคุณมากๆ เลยครับ +1
 wanwan017 wanwan017
บันทึกการเข้า

สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com
หน้า: [1]   ขึ้นบน
พิมพ์