进行GET请求很简单,只需在锚标记的href属性中指定一个URL即可。如何将JSON对象追加到GET url?
但是,如何将JSON对象添加到该URL?
我猜这必须通过jQuery来完成......但我无法使用AJAX,或者浏览器不显示响应。
到目前为止,我试过这个:$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));
但它不附加数据。这是触发点击
进行GET请求很简单,只需在锚标记的href属性中指定一个URL即可。如何将JSON对象追加到GET url?
但是,如何将JSON对象添加到该URL?
我猜这必须通过jQuery来完成......但我无法使用AJAX,或者浏览器不显示响应。
到目前为止,我试过这个:$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));
但它不附加数据。这是触发点击
这应该工作:
jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data}));
一个GET请求具有查询字符串参数。如果它是您真正想要的GET请求,那么您可以将对象上的属性映射到请求上的键值对。
例如:
JSON object: { prop1: val1, prop2: val2 }
url get querystring: ?prop1=val1&prop2=val2
但是,如果你要的对象发送到服务器,也许你真的想要一个POST?在这种情况下,JSON对象将位于POST的主体中。
GET请求中的任何值都应该被URL编码到请求字符串中。
有一个jQuery.get()
函数可以为你做这件事,但它所做的只是将一组名称/值对作为查询字符串参数序列化。
我不确定你的意思是不能使用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%的方式。
你的意思是你不能使用AJAX或响应没有呈现?你只是想生成一个链接? – Josh 2012-02-28 04:39:28
是的,我只是想做一个HTTP GET请求,以便服务器可以重定向我的浏览器,基于参数中的数据。 – DerNalia 2012-02-28 04:46:48
严格地说,不需要jQuery,你只需要正确编码JSON:'link'。但我不认为你为你的问题提供了足够的信息(上下文)。 – 2012-02-28 04:49:21