Javascript 如何将JSON对象附加到GET url?

Javascript 如何将JSON对象附加到GET url?,javascript,jquery,json,Javascript,Jquery,Json,发出GET请求很容易,只需在锚定标记的href属性中指定URL即可 但是,如何将JSON对象添加到该URL 我猜这必须通过jQuery来完成。。。但是我不能使用AJAX,或者响应不是由浏览器呈现的 到目前为止,我已经尝试过:j(“#gen”).attr(“href”),$j(“#gen”).attr(“href”)+“?”+JSON.stringify({object:data}))但它不附加数据。单击GET请求具有querystring参数时会触发此操作。如果它是您真正想要的GET请求,那么您

发出GET请求很容易,只需在锚定标记的href属性中指定URL即可

但是,如何将JSON对象添加到该URL

我猜这必须通过jQuery来完成。。。但是我不能使用AJAX,或者响应不是由浏览器呈现的


到目前为止,我已经尝试过:
j(“#gen”).attr(“href”),$j(“#gen”).attr(“href”)+“?”+JSON.stringify({object:data}))但它不附加数据。单击GET请求具有querystring参数时会触发此操作。如果它是您真正想要的GET请求,那么您可以将对象上的属性映射到请求上的键值对

例如:

JSON object:  { prop1: val1, prop2: val2 } 
url get querystring:  ?prop1=val1&prop2=val2

但是,如果你想向服务器发送一个对象,也许你真的想要一个POST?在这种情况下,JSON对象将位于文章的正文中。

GET请求具有querystring参数。如果它是您真正想要的GET请求,那么您可以将对象上的属性映射到请求上的键值对

例如:

JSON object:  { prop1: val1, prop2: val2 } 
url get querystring:  ?prop1=val1&prop2=val2

但是,如果你想向服务器发送一个对象,也许你真的想要一个POST?在这种情况下,JSON对象将位于文章的正文中。

GET请求中的任何值都应被URL编码到请求字符串中

有一个函数可以为您执行此操作,但它所做的只是将一组名称/值对序列化为查询字符串参数

我不太清楚你说的不能使用AJAX是什么意思。使用jQuery可以执行以下操作:

$.get("foo/bar", { foo: "foo", bar: "bar" },
   function(data){
     $("#myTarget").append(data);
   });
当然,假设返回值是HTML

好的,我想我更明白一点。如果您只想将某个对象转换为查询字符串,那么您可以非常轻松地使用自己的函数:

function toQueryString(obj){
    var formattedVals = [];

    for(var prop in obj){
        formattedVals.push(prop + "=" + obj[prop]);
    }

    return formattedVals.join("&");
}
您可以通过以下方式调用它来了解其工作原理:

var data = { foo: "foo", bar: "bar" };

alert(toQueryString(data));

无论如何,这应该可以让您完成90%的任务。

get请求中的任何值都应该被URL编码到请求字符串中

有一个函数可以为您执行此操作,但它所做的只是将一组名称/值对序列化为查询字符串参数

我不太清楚你说的不能使用AJAX是什么意思。使用jQuery可以执行以下操作:

$.get("foo/bar", { foo: "foo", bar: "bar" },
   function(data){
     $("#myTarget").append(data);
   });
当然,假设返回值是HTML

好的,我想我更明白一点。如果您只想将某个对象转换为查询字符串,那么您可以非常轻松地使用自己的函数:

function toQueryString(obj){
    var formattedVals = [];

    for(var prop in obj){
        formattedVals.push(prop + "=" + obj[prop]);
    }

    return formattedVals.join("&");
}
您可以通过以下方式调用它来了解其工作原理:

var data = { foo: "foo", bar: "bar" };

alert(toQueryString(data));
无论如何,这应该可以让你达到90%的目标。

这应该可以:

jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data}));
这应该起作用:

jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data}));

您不能使用AJAX或响应未呈现是什么意思?你只是想生成一个链接吗?是的,我只是想发出一个HTTP GET请求,这样服务器就可以根据参数中的数据重定向我的浏览器。严格地说,不需要jQuery,你只需要正确地对JSON编码:
。但我认为您没有为您的问题提供足够的信息(上下文)。到目前为止,我已经尝试过这样做:$j(“#gen”).attr($href),$j(“#gen”).attr($href”)+“?”+JSON.stringify({object:data});但它没有附加数据。这是在单击时触发的,您不能使用AJAX或响应未呈现是什么意思?你只是想生成一个链接吗?是的,我只是想发出一个HTTP GET请求,这样服务器就可以根据参数中的数据重定向我的浏览器。严格地说,不需要jQuery,你只需要正确地对JSON编码:
。但我认为您没有为您的问题提供足够的信息(上下文)。到目前为止,我已经尝试过这样做:$j(“#gen”).attr($href),$j(“#gen”).attr($href”)+“?”+JSON.stringify({object:data});但它没有附加数据。jQuery语法单击+1将触发此操作,以将JSON映射到querystring参数。@DerNalia-当然不是。。。如何用简单的名称-值配对来表示嵌套结构?大多数实现都需要一个简单的对象或字典。jQuery语法需要+1才能将JSON映射到querystring参数。@DerNalia-当然不是。。。如何用简单的名称-值配对来表示嵌套结构?大多数实现都需要一个简单的对象或字典。