如何在javascript中实现类似PHP的http_build_query和反向的东西?

wam*_*amp 7 javascript

<?php
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data);
/* Output?
      foo=bar&baz=boom&cow=milk&php=hypertext+processor
*/
Run Code Online (Sandbox Code Playgroud)

如何做类似的事情在JavaScript中,比如,获得查询字符串数组,并转换成数组查询字符串

UPDATE

jquery插件无法正常工作:

var fromVar = $.query.load('?cow=milk')
fromVar.set('first', 'value'); 
fromVar.toString()
Run Code Online (Sandbox Code Playgroud)

?cow=milk在我想要的时候输出?cow=milk&first=value

Les*_*Les 28

如果你正在使用jQuery,那么你可以使用jQuery.param()函数:

var obj = { "foo":"bar", "baz":"boom", "php":"hypertext processor" };
var str = jQuery.param(obj);
alert(str); // should be "foo=bar&baz=boom&php=hypertext+processor"
Run Code Online (Sandbox Code Playgroud)

它也可以序列化一些复杂的数组.


Mat*_*hen -1

尝试 jQuery查询插件。这非常直观。您可以使用 get 和 set 访问器来读取和修改查询字符串:

var cow = $.query.get('cow');
$.query.set('cow', 'goat');
Run Code Online (Sandbox Code Playgroud)

您可以从现有字符串创建新的查询对象:

var fromVar = $.query.load('?cow=milk')
var cow = fromVar.get('cow'); // milk
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个空对象:

var newQ = $.query.empty();
newQ = newQ.set('first', 'value'); // "?first=value"
Run Code Online (Sandbox Code Playgroud)