发出GET请求很简单,只需在锚标记的href属性中指定一个URL即可。
但是,如何将JSON对象添加到该URL?
我猜这必须通过jQuery完成...但是我不能使用AJAX,或者浏览器不呈现响应。
到目前为止,我已经尝试过这个:$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));
但它没有附加数据。这是在点击
答案 0 :(得分:3)
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%的胜利。
答案 1 :(得分:2)
GET请求有查询字符串参数。如果它是您真正想要的GET请求,那么您可以将对象的属性映射到请求上的键值对。
例如:
JSON object: { prop1: val1, prop2: val2 }
url get querystring: ?prop1=val1&prop2=val2
但是,如果你想将一个对象发送到服务器,也许你真的想要一个POST?在这种情况下,JSON对象将位于POST的主体中。
答案 2 :(得分:1)
这应该有效:
jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data}));