Tags:

jquery.ajax
หลังจากมัน success แล้ว ให้มันเอาค่าในตัวแปร ไปเก็บไว้ ที่ ตัวแปร global ด้วยได้มั้ยครับ

var input_search_device_name;

    f = {
        groupOp : "AND",
        rules : []
    };

    if (input_search_device_name != '')
        f.rules.push({
            field : "display_name",
            op : "cn",
            data : input_search_device_name
        });

    jQuery.ajax({
        type : "POST",
        url : deviceNewFetchUrl,
        data : {
            _search : 'true',
            searchField : "display_name",
            rows : rowsPerPage,
            sidx : 'user_id',
            filters : JSON.stringify(f),
        },
        sync : true,
        dataType : "json",
        success : function clearAndAddMarkerLabel(json) {
            console.log("Into clearAndAddMarkerLabel");
            console.log(JSON.stringify(f));
            console.log(JSON.stringify(json));

            json.rows.forEach(function(userLocation) {
                dataUserLocation[userLocation.user_id] = userLocation;
                // console.log("userLocation : ");
                // console.log(userLocation);
                plotDeviceOnMap(userLocation);
            });

        },
        error : function() {
            alert("Error");
        }
    });
});

ผมอยากเอา ตัวแปร input_search_device_name นี้ ไปใช้ที่อีก function นึง โดยยังมีค่าที่ป้อนไว้อยู่ สามารถทำได้มั้ยครับ

Get latest news from Blognone
By: PiKO
ContributorAndroid
on 21 June 2013 - 18:52 #589268

ก็ประกาศตัวแปรลอยไว้ข้างบนก่อนอันนึงครับ (Global) แล้วค่อยไป assign ใน function ตอน success


:: DigiKin8 ::

By: Benzines on 21 June 2013 - 19:00 #589270 Reply to:589268

ทดลองแล้วครับ ลอง console.log ออกมา ได้เป็น undefine

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 21 June 2013 - 19:55 #589279 Reply to:589270
PaPaSEK's picture

ผมยืนยันตาม PiKO นะ

ลองใช้ Firebug ใน Firefox debug ดู scope ของตัวแปรครับ

หรือจะลองตั้งตัวแปรให้เป็น field ของ object window ก็ได้

เวลาใส่ค่ามันจะได้เหมือนเป็นการกำหนด scope ในตัวเลย

window.var1 = value;

By: tearfire on 21 June 2013 - 20:51 #589291
tearfire's picture

อีกวิธี (ออกจะเถื่อนหน่อย) เอา div ซักตัวมา .data เก็บค่าตัวแปรเลยครับ :P

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 21 June 2013 - 21:48 #589307 Reply to:589291
PaPaSEK's picture

จริงๆ แล้วถ้ามองว่าเอาค่าไปเก็บใน html element ใดๆ

ก็ให้มองว่าใช้สิ่งที่มีอยู่แล้วโดยไม่ต้องสร้างใหม่ดีกว่า เพราะ object ใน JavaScipt มันเติมฟิลด์ได้อิสระอยู่แล้ว

By: nevermore
Windows PhoneAndroidUbuntuWindows
on 22 June 2013 - 09:00 #589367 Reply to:589291
nevermore's picture

ผมชอบวิธีนี้ เป็นวิธีประจำที่ใช้เลย ไม่ชอบเอาโค้ด PHP ไปยัดใส่ใน Javascript

By: suwatchai on 21 June 2013 - 23:04 #589322

จัดลำดับการโหลดของไฟล์ javascript ให้ดีครับ แล้วควรแน่ใจว่า ตัวแปรนั้นประกาศไว้ก่อนมีการเรียกใช้จริงๆ

By: squeezy
iPhoneWindows PhoneAndroidUbuntu
on 22 June 2013 - 02:25 #589342 Reply to:589322

ได้แน่นอนครับ อีกเสียง
ลองไล่โค๊ดดูดีๆ

Success ตอบมามันมีค่ามั้ย
assign ใส่ตัวแปรแล้วไปเปลี่ยนค่าตรงไหนก่อน debug ป่าว

By: AMp
In Love
on 22 June 2013 - 13:16 #589416

http://stackoverflow.com/questions/3352020/jquery-the-best-way-to-set-a-global-variable

By: EThaiZone
ContributorAndroidUbuntuWindows
on 22 June 2013 - 17:09 #589498
EThaiZone's picture

ประกาศตัวแปรนอก scope ไม่ต้องใช้ var และทำให้เป็น object ครับ ถ้ายังไม่ได้อีกต้องทบทวนที่ตัวเองเคยเขียนแล้วครับ

ปล. ที่ก็อบที่หัวกระทู้มา มันแท็กปิดมันเกินมาได้ครับ ก็อบหัวมาไม่ครบหรือเปล่า?


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: Similanblu
AndroidWindows
on 23 June 2013 - 03:33 #589659

ไม่ต้องใช้ var

แต่เวลาใช้ global ถ้าอยากให้ชัดเจนว่าเป็น global แนะนำให้ใช้เป็น document.myGlobalVar แบบนี้ดีกว่า เห็นที่ไหนก็ไม่สับสน

By: Benzines on 23 June 2013 - 15:32 #589749

ต้องขอโทษทุกท่านด้วยครับ เป็นความผิดผมเอง ตัวแปร local ดันใส่ var ไว้ มันก็เลยเก็บค่าไปที่ local แทน
ตอนนี้ได้แล้วครับ ขอบคุณทุกท่านมากครับ
เข้ามาตอบกันเยอะมากกกก อบอุ่นจนร้อนกันเลยทีเดียว

By: saknarak
Android
on 26 June 2013 - 00:44 #590580
saknarak's picture

กรณีนี้เรียกว่าโดน shadow หรือโดนบังโดย local variable