jQuery ajax - วิธี .param()
ตัวอย่าง
เซอร์ีลายตัวแปร key/value ตัวแปร:
var params = { width:1900, height:1200 }; var str = jQuery.param(params); $("#results").text(str);
ผลลัพธ์:
width=1680&height=1050
TIY ตัวอย่าง
ปริมาณเซอร์ีลายตัวแปรภาค:
$("button").click(function(){ $("div").text($.param(personObj)); });
คำนิยามและวิธีใช้
วิธี .param() ทำการสร้างตัวแปรภาคหรือตัวแปรที่เซอร์ีลาย
ค่าที่เซอร์ีลายนี้สามารถใช้ในคำค้นหาของ URL ในการทำ AJAX ร้อยการ
การใช้งาน
jQuery.param(object,traditional)
ตัวแปร | รายละเอียด |
---|---|
object | อาเรย์หรือตัวแปรที่ต้องการเซอร์ีลาย |
traditional | กำหนดว่าจะใช้วิธีเซอร์ีลายที่แบบเก่า (shallow serialization) หรือไม่ (parameter serialization) |
รายละเอียด
วิธี .param() ใช้ในการเปลี่ยนค่าขององค์ประกอบเป็นตัวแปรภาคที่เซอร์ีลายได้ โปรดดู .serialize() ดูข้อมูลเพิ่มเติม。
สำหรับ jQuery 1.3 ถ้าที่ส่งมาเป็นฟังก์ชัน จะได้ค่าที่กลับมาจากฟังก์ชัน .param() แทนที่จะกลับฟังก์ชันในรูปแบบของตัวแปรภาค
สำหรับ jQuery 1.4 วิธี .param() จะทำการเซอร์ีลายตัวแปรด้วยวิธีที่เรียกว่า recursion ตามรูปแบบของภาษาสคริปต์ที่มีความสมบูรณ์ในปัจจุบัน เช่น PHP, Ruby on Rails และอื่น ๆ คุณสามารถนำไปตั้งค่า jQuery.ajaxSettings.traditional = true; เพื่อปิดฟังก์ชันนี้ทั่วไป
ถ้าว่าตัวแปรที่ถูกส่งมาในอาเรย์ ต้องเป็นที่ .serializeArray() จะกลับค่าในรูปแบบของตัวแปรภาคของอาเรย์:
[{name:"first",value:"Rick"}, {name:"last",value:"Astley"} {name:"job",value:"Rock Star"}]
ข้อเตือน:เพราะมีบางโครงการที่มีความสามารถที่จะประสานกับตัวเลขที่ถูกเซอร์ีลายเพียงน้อยมาก ดังนั้นเมื่อส่งตัวแปรเป็นสตริงที่มีองค์ประกอบเป็นออบเจ็กท์หรือสตริงที่มีรูปแบบเนื่องในเนื่อง โปรดระมัดระวัง!
ใน jQuery 1.4 วิธีการเซอร์ีลายสำหรับองค์ประกอบ input ของ HTML5 จะถูกเซอร์ีลายเช่นเดียวกัน
ตัวอย่างเพิ่มเติม
เราสามารถแสดงค่าของตัวแปรคำถามของเป้าหมายและ URI รหัสไว้เช่นนี้:
var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var recursiveEncoded = $.param(myObject); var recursiveDecoded = decodeURIComponent($.param(myObject)); alert(recursiveEncoded); alert(recursiveDecoded);
recursiveEncoded และ recursiveDecoded ออกมาดังนี้:
a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3 a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3
สามารถกำหนดตัวแปร traditional ให้เป็น true เพื่อโมเดลจัดการทางการใช้งานของ $.param() ก่อนเวอร์ชั่น 1.4 ของ jQuery ได้:
var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var shallowEncoded = $.param(myObject, true); var shallowDecoded = decodeURIComponent(shallowEncoded); alert(shallowEncoded); alert(shallowDecoded);
recursiveEncoded และ recursiveDecoded ออกมาดังนี้:
a=%5Bobject+Object%5D&b=1&b=2&b=3 a=[object+Object]&b=1&b=2&b=3