Javascript 如何将JSON对象附加到GET url?
发出GET请求很容易,只需在锚定标记的href属性中指定URL即可 但是,如何将JSON对象添加到该URL 我猜这必须通过jQuery来完成。。。但是我不能使用AJAX,或者响应不是由浏览器呈现的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请求,那么您
到目前为止,我已经尝试过:
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-当然不是。。。如何用简单的名称-值配对来表示嵌套结构?大多数实现都需要一个简单的对象或字典。