jQuery 3.3

jQuery.param()




jquery

jQuery.param (obj) الإرجاع: String

الوصف: إنشاء تمثيل متسلسل لصفيف ، أو كائن عادي ، أو كائن jQuery مناسب للاستخدام في سلسلة استعلام عنوان URL أو طلب Ajax. في حالة تمرير كائن jQuery ، يجب أن يحتوي على عناصر إدخال مع خصائص الاسم / القيمة.

يتم استخدام هذه الدالة داخليًا لتحويل قيم عنصر النموذج إلى تمثيل سلسلة متسلسلة (انظر .serialize() لمزيد من المعلومات).

اعتبارًا من jQuery 1.3 ، يتم استخدام قيمة الإرجاع للدالة بدلاً من الدالة كسلسلة.

اعتبارًا من jQuery 1.4 ، تقوم طريقة $.param() بتسلسل الأشياء العميقة بشكل متكرر لاستيعاب لغات وأطر عمل البرمجة الحديثة مثل PHP و Ruby on Rails. يمكنك تعطيل هذه الوظيفة عالميًا عن طريق تعيين jQuery.ajaxSettings.traditional = true; .

اعتبارًا من jQuery 3.0 ، لم تعد طريقة $.param() تستخدم jQuery.ajaxSettings.traditional افتراضي لها jQuery.ajaxSettings.traditional بشكل افتراضي إلى false . للحصول على أفضل توافق عبر الإصدارات ، اتصل بـ $.param() بقيمة صريحة للوسيطة الثانية ولا تستخدم الإعدادات الافتراضية.

إذا كان الكائن الذي تم تمريره في صفيف ، يجب أن يكون مصفوفة من الكائنات بالتنسيق الذي تم إرجاعه بواسطة .serializeArray()

[
  { name: "first", value: "Rick" },
  { name: "last", value: "Astley" },
  { name: "job", value: "Rock Star" }
]

ملاحظة: نظرًا لأن بعض الأطر لديها قدرة محدودة على تحليل الصفائف المتسلسلة ، يجب على مطوري البرامج توخي الحذر عند تمرير وسيطة obj التي تحتوي على كائنات أو صفائف متداخلة ضمن مصفوفة أخرى.

ملاحظة: نظرًا لعدم وجود مواصفات متفق عليها عالميًا لسلاسل المعلمات ، من غير الممكن تشفير بنية البيانات المعقدة باستخدام هذه الطريقة بطريقة تعمل بشكل مثالي عبر جميع اللغات التي تدعم هذه المدخلات. استخدم تنسيق JSON كبديل لترميز البيانات المعقدة بدلاً من ذلك.

في jQuery 1.4 ، يتم أيضًا تسلسل عناصر إدخال 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 كما يلي:

و٪ 5Bone٪ 5D = 1 & مئوية 5Btwo٪ 5D = 2 & مئوية 5Bthree٪ 5D = 3 و ب٪ 5B٪ 5D = 1 & ب٪ 5B٪ 5D = 2 & ب٪ 5B٪ 5D = 3
و[واحد] = 1 & ل[اثنين] = 2 وعلى [ثلاث] = 3 و ب [] = 1 & ب [] = 2 & ب [] = 3

لمحاكاة سلوك $.param() قبل jQuery 1.4 ، يمكننا تعيين الوسيطة traditional إلى true :

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 );

يتم تنبيه قيم shallowEncoded و shallowDecoded على النحو التالي:

و=٪ 5Bobject + كائن٪ 5D & ب = 1 & ب = 2 & ب = 3
و= [وجوه + كائن] و ب = 1 & ب = 2 & ب = 3

أمثلة:

تسلسل كائن مفتاح / قيمة.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.param demo</title>
  <style>
  div {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="results"></div>
 
<script>
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
$( "#results" ).text( str );
</script>
 
</body>
</html>

عرض:

تسلسل بعض الأشياء المعقدة

// <=1.3.2:
$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"
// >=1.4:
$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"
 
// <=1.3.2:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a=[object+Object]&d=3&d=4&d=[object+Object]"
 
// >=1.4:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"