jQuery ajax - روش .param()

مثال

سریال‌سازی یک کلید/مقدار شیء:

var params = { width:1900, height:1200 };
var str = jQuery.param(params);
$("#results").text(str);

نتایج:

width=1680&height=1050

مثال‌های عملی

نتایج سریال‌سازی شده‌ی شیء را نمایش دهید:

$("button").click(function(){
  $("div").text($.param(personObj));
});

آزمایش کنید

تعریف و استفاده

روش .param() یک نمایش سریال‌سازی شده برای آرایه یا شیء ایجاد می‌کند.

این مقدار سریال‌سازی شده می‌تواند در جستجوی URL درخواست AJAX استفاده شود.

ترتیب

jQuery.param(object,traditional)
پارامتر توضیح
object آرایه یا شیء برای سریال‌سازی.
traditional تعیین می‌کند که آیا باید به صورت سنتی و سطحی (سریال‌سازی پارامترها) استفاده شود.

شرح دقیق‌تر مراجعه کنید

روش .param() برای تبدیل مقادیر عناصر به رشته‌ی سریال‌سازی شده استفاده می‌شود. لطفاً به .serialize() اطلاعات بیشتری بخوانید.

برای jQuery 1.3، اگر پارامتر ارسالی یک تابع باشد، استفاده از .param() منجر به دریافت بازگشت‌值的 تابع می‌شود، نه تبدیل تابع به یک رشته.

برای jQuery 1.4، روش سریال‌سازی method .param() به صورت عمیق و با استفاده از ریکورس به صورت خودکار انجام می‌شود تا با نیازهای زبان‌های اسکریپت مدرن مانند 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() در نسخه‌های قبل از jQuery 1.4 را شبیه‌سازی کنید:

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