如何使用YUI(2.7.0或3.0.0 Beta)将javascript对象/散列(属性和值对)编码为URL编码的查询字符串?
我想从Prototype中执行等效的Object.toQueryString():
我需要使用YAHOO.util.Connect为GET和POST请求编码参数。
事实证明,YAHOO.util.Connect有一个setForm()方法来序列化一个表单,但仍然让我感到寒冷,无法为GET请求编码参数,或者YAHOO.util.Connect.asyncRequest()的第四个参数传递数据。
答案 0 :(得分:2)
我为自己的项目做了这个小帮手。
var toQueryString = function(o) {
if(typeof o !== 'object') {
return false;
}
var _p, _qs = [];
for(_p in o) {
_qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
}
return _qs.join('&');
};
// And to use it
var qs = toQueryString({'foo' : 'bar'});
答案 1 :(得分:0)
YUI3有io-form模块,你可以在你的调用中实例化使用。它允许您编写如下代码:
YUI().use('node', 'io-form', function(Y) {
Y.get('#formId').on('sumbit', function(e) {
e.preventDefault();
Y.io(postURL,
{
method: "POST",
on: {
complete: on_complete_handler
},
form: {
id: "formId"
}
});
}
});
此代码将对postURL发出POST请求,并提交ID为“formId”的表单中的所有输入值。该模块也适用于GET请求。
答案 2 :(得分:0)
我最终根据github上的一些代码使用了这样的东西。该函数必须处理发布数组..
“Y”是对“YAHOO”的引用
/**
* Turns an object into its URL-encoded query string representation.
*
* @param {Object} obj Parameters as properties and values
*/
toQueryString: function(obj, name) {
var i, l, s = [];
if (Y.lang.isNull(obj) || Y.lang.isUndefined(obj)) {
return name ? encodeURIComponent(name) + '=' : '';
}
if (Y.lang.isBoolean(obj)) {
obj = obj ? 1 : 0;
}
if (Y.lang.isNumber(obj) || Y.lang.isString(obj)) {
return encodeURIComponent(name) + '=' + encodeURIComponent(obj);
}
if (Y.lang.isArray(obj)) {
name = name; // + '[]'; don't do this for Java (php thing)
for (i = 0, l = obj.length; i < l; i ++) {
s.push(arguments.callee(obj[i], name));
}
return s.join('&');
}
// now we know it's an object.
var begin = name ? name + '[' : '',
end = name ? ']' : '';
for (i in obj) {
if (obj.hasOwnProperty(i)) {
s.push(arguments.callee(obj[i], begin + i + end));
}
}
return s.join("&");
}
答案 3 :(得分:0)
我看到YUILibrary Ticket 2528174指的是已接受的contribution。
The Querystring Utility
Provides static methods to serialize objects to querystrings and deserialize objects from querystrings.
Three modules are available:
querystring - Both parse and stringify functionality
querystring-parse - Parse valid querystring into JavaScript objects
querystring-stringify - Serialize JavaScript objects into valid query strings