JSON - การสร้าง Objects

ตอบกระทู้


คำถามนี้ เพื่อป้องกันการส่งแบบอัตโนมัติจากสแปมบอท
รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[flash] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: JSON - การสร้าง Objects

Re: JSON - การสร้าง Objects

โพสต์ โดย thatsawan » 23/06/2014 6:16 pm

ได้เเล้วๆ..............

โค้ด: เลือกทั้งหมด

<!DOCTYPE html>
<html>
    <head>
        <title> CSS </title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style>
           #mindphp{
                font-size: xx-large ;
                background-color: #00FF00;
            }
            div {
                font-size: xx-large ;
                background-color: #FFFF00;
            }       
        </style>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){     
          $.ajax({
                    url: 'json_test.php',
                    success: function( datajson ) {
                        $('#mindphp2').html(''); // ให้เเทนที่ TODO write content เป็นว่างเปล่า
                        $.each(datajson.test, function(k, v) { //datajson.test 2 มิติ
//                            alert(k + '=>' + v); //ให้ alert ค่า
                            $('#mindphp2').append(' ' + k + ' => ' + v) //วนลูป แสดงค่าออกมา .append คือให้แสดงค่า เรียงต่อจากตำแหน่ง#mindphp2 ถ้าใช้ html.จะได้ค่าสุดท้ายค่าเดียว
                        });
                    },
                      cache: false
                });
         
           }); 
        </script>
    </head>
        <body>
           
            <div id="mindphp2">TODO write content</div>
           
        </body>
</html>

โค้ด: เลือกทั้งหมด

<?php
$arr 
=  array('test' =>
       
                    
(array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5))
         
             
);
header('Content-Type: application/json');
echo json_encode($arr);
 

Re: JSON - การสร้าง Objects

โพสต์ โดย mindphp » 22/06/2014 6:01 pm

datajson.test.length

Re: JSON - การสร้าง Objects

โพสต์ โดย thatsawan » 22/06/2014 3:12 pm

โค้ด: เลือกทั้งหมด

 $arr =  array('test' =>
        array(
                    (array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5))
             )        
             
);
echo json_encode($arr); 


รัน php ออกมาได้ {"test":[{"a":"1","b":2,"c":3,"d":4,"e":5}]}
แล้วก็

โค้ด: เลือกทั้งหมด

 $arr =  array('test' =>
       
                    
(array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5))
         
             
);
echo json_encode($arr);

รัน php ออกมาได้ {"test":{"a":1,"b":2,"c":3,"d":4,"e":5}}

โค้ด: เลือกทั้งหมด

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js">
        <script type="text/javascript">
        $(document).ready(function(){     
            
                $.ajax({
                    url: 'json_test_php.php',
                    dataType: "json",
                    success: function( datajson ) {
               // $( "#mindphp2").html(datajson.test);
               alert(datajson.test);
                      },
                })
         
           }) 
        </script>

รัน html ทั้ง จาก phpทั้ง 2 แบบจะได้
Untitled.png
Untitled.png (6.11 KiB) เปิดดู 3128 ครั้ง

เเล้วถ้าทำเเบบนี้

โค้ด: เลือกทั้งหมด

 <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js">
        <script type="text/javascript">
        $(document).ready(function(){       
            
                $.ajax({
                    url: 'json_test_php.php',
                    dataType: "json",
                    success: function( datajson ) {
                $( "#mindphp2").html(datajson.test.a);
               alert(datajson.test.a);
                      },
                })
         
           }) 
        </script>

ก็จะเเสดงผล ค่าของ a ได้มา 1 ต่า
ทำไมถึงเป็นเเบบนี้ค่ะ เเล้วพอหนูใส่ .length ก็ขึ้น underfined หนูไม่รู้จะใส่ตรงไหน ?

Re: JSON - การสร้าง Objects

โพสต์ โดย mindphp » 22/06/2014 12:26 pm

ตัวอย่าง jsondata.length ได้เลย เพราะส่งมาเป็น array อยู่แล้ว
แต่ถ้าจะส่งมาหลายๆ ค่าในหนึ่งตัวแปล เช่นตัวแปล a ตอนกำหนดในไฟล์ php ต้อง กำหนดเป็น array หรือ object
เป็นมิติที่สอง ของ
array('a' => array('aa'=>'11,'ab'=>'12'), ....

ลองดูครับ

Re: JSON - การสร้าง Objects

โพสต์ โดย thatsawan » 22/06/2014 9:22 am

เเล้ว ถ้าจากเขียนจาก php ส่งไป html (ตัวอย่างด้านบน เขียนไว้ในไฟล์ html เเล้วก้อวน loop ในไฟล์ html เลย)

โค้ด: เลือกทั้งหมด

var member =
     { "private" : [
                  { "id" : 001, "Name"  : "ABC"  },
                  { "id" : 002, "Name"  : "XYZ"  }
               ],                       
      "public"  : [
                  { "id" : 111, "Name"  : "OOP"  },
                  { "id" : 112, "Name"  : "PHP"  }
               ]   
}   

var i = 0

เเต่ ถ้าเป็น จากไฟล์ php เเล้วจะส่งมา html เเบบดึงมาเเสดงทั้งหมด
ตอนนี้

โค้ด: เลือกทั้งหมด

$arr = array('a' => date('Y-m-d H:i:s'), 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr); 

แปลงออกมาเป็นเเบบนี้
{"a":1,"b":2,"c":3,"d":4,"e":5}
เเล้วถ้าจะให้วนออกมาแสดงผลเราจะต้องเขียน อะไรเพิ่มใน php ถึงจะมาวนได้

โค้ด: เลือกทั้งหมด

    for(i=0;i<(....?....).(...?...).length;i++)
               {     
                  document.writeln ....
                 
               }   

Re: JSON - การสร้าง Objects

โพสต์ โดย mindphp » 22/06/2014 12:52 am

json_encode()
ส่งค่าให้ Client (Javascript Json) เอาไปใช้งานต่อ

ถ้าจะส่งระหว่างไฟล์ php หรือ Server to server
ต้องใช้ Web service
viewtopic.php?f=29&t=12011

Re: JSON - การสร้าง Objects

โพสต์ โดย thatsawan เบาปัญญา » 22/06/2014 12:27 am

ถ้า เขียน php ไว้อีกไฟล์ เเล้วให้เเสดงผล เเบบวน loop ออกมา จะทำได้อย่างไร เเบบไม่เขียนไว้ในไฟล์ html

โค้ด: เลือกทั้งหมด


$arr 
= array('a' => date('Y-m-d H:i:s'), 'b' => 2'c' => 3'd' => 4'e' => 5);
echo 
json_encode($arr);
 

โค้ด: เลือกทั้งหมด

      for(i=0;i<(....?....).(...?...).length;i++)
               {     
                  document.writeln ....
                  
               }   

ข้างบน