如何将JSON对象附加到GET URL?

时间:2012-02-28 04:36:11

标签: javascript jquery json

发出GET请求很简单,只需在锚标记的href属性中指定一个URL即可。

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

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

到目前为止,我已经尝试过这个:$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));但它没有附加数据。这是在点击

上触发的

3 个答案:

答案 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}));