وصف الطريقة:
يحول سلسلة إلى كائن. لوضعها بصراحة ، يتم تحويل سلسلة المعلمة بالفعل على عنوان URL إلى كائن صفيف. (يمكنك أن تقول من خلال النظر إلى الأمثلة)
القواعد:
نسخة الكود كما يلي:
querystring.parse (str ، [sep] ، [Eq] ، [Options])
تلقي المعلمات:
شارع
SEP يقوم بتعيين الفاصل ، الافتراضي هو "&"
EQ يعين حرف المهمة ، الافتراضي هو '='
[خيارات] MaxKeys الحد الأقصى لطول السلسلة التي يمكن قبولها ، الافتراضي هو 1000
مثال:
نسخة الكود كما يلي:
QueryString.parse ('foo = bar & baz = qux & baz = quux & corge')
// الإرجاع
{foo: 'bar' ، baz: ['Qux' ، 'Quux'] ، corge: ''}
رمز المصدر:
نسخة الكود كما يلي:
// تحليل مفتاح = سلسلة Val.
querystring.parse = querystring.decode = function (qs ، sep ، eq ، reports) {
SEP = SEP || '&' ؛
Eq = Eq || '=' ؛
var obj = {} ؛
if (! util.isstring (qs) || qs.length === 0) {
إرجاع OBJ ؛
}
var regexp = //+/g ؛
qs = qs.split (SEP) ؛
var maxkeys = 1000 ؛
if (Options && util.isnumber (Options.Maxkeys)) {
MaxKeys = Options.Maxkeys ؛
}
var len = qs.length ؛
// maxkeys <= 0 يعني أنه يجب ألا نحصر عدد المفاتيح
if (maxkeys> 0 && len> maxkeys) {
لين = maxkeys ؛
}
لـ (var i = 0 ؛ i <len ؛ ++ i) {
var x = qs [i] .replace (regexp ، '٪ 20') ،
idx = x.indexof (Eq) ،
KSTR ، VSTR ، K ، V ؛
if (idx> = 0) {
KSTR = x.substr (0 ، idx) ؛
VSTR = x.substr (idx + 1) ؛
} آخر {
KSTR = X ؛
vstr = '' ؛
}
يحاول {
k = decodeuricomponent (KSTR) ؛
v = decodeuricomponent (vSTR) ؛
} catch (e) {
k = querystring.unescape (kstr ، true) ؛
v = QueryString.unescape (vstr ، true) ؛
}
if (! hasownproperty (obj ، k)) {
obj [k] = v ؛
} آخر إذا (util.isarray (obj [k])) {
obj [k] .push (v) ؛
} آخر {
obj [k] = [obj [k] ، v] ؛
}
}
إرجاع OBJ ؛
} ؛