我使用$.getJSON
提取数据并将其显示在div中。我以为我会有另一个json查询来获得一个产品,但我不这样做,我想知道无论如何都要查询结果或只是抓住一些变量来传递?我需要将一条记录传递给另一页。我在这个网站上找到了这个:
var people = json.filter(function(el)
{
return el.Phoneno.some(function(number)
{
return number.Cell == "777-777-7777";
});
});
似乎我需要再次提取整个查询并解析它。是否只是将一些变量传递给另一个页面?对jQuery来说很新,如果有人可以指出我正确的方向会很棒,感谢您的帮助!
更新:
$.getJSON("myurl", function(data){
$.each(data.myproducts, function(i,item){
$("#products").append("<li><a href='"+item.Url+"' target='_top'><img src='"+item.image+"'></a>"
+"<br>"+item.Name+"<br>"+"$"+item.saleprice+"</li>");
});
});
答案 0 :(得分:3)
您可以传递JavaScript对象:
var data = {
url: 'http://example.com',
image: 'http://placekitten.com/200/300',
name: 'can haz cheezburger?'
};
通过URL查询参数将其序列化为JSON:
var strData = JSON.stringify(data);
// '{"url":"http://example.com","image":"http://placekitten.com/200/300","name":"can haz cheezburger?"}'
然后对其进行网址编码:
var encodedStrData = encodeURIComponent(strData);
// '%7B%22url%22%3A%22http%3A%2F%2Fexample.com%22%2C%22image%22%3A%22http%3A%2F%2Fplacekitten.com%2F200%2F300%22%2C%22name%22%3A%22can%20haz%20cheezburger%3F%22%7D'
然后将其添加到网址的query string。如果您有这样的锚:
<a id="next" href="next/page">Next Page</a>
您可以使用jQuery修改它:
var $next = $('#next'),
url = $next.prop('href') + '?data=' + encodedStrData;
$next.prop('href', url);
接收页面必须解压缩URL中的数据(如果存在)。
...或者你可以传递某种物品ID:
<a href="next/page?item=42">Next Page</a>
试试这个,使用$.param(...)
代替encodeURIComponent(JSON.stringify(...))
:
$.getJSON("myurl", function(data)
{
$.each(data.myproducts, function(i,item)
{
var url = 'details.html?' + $.param({data: item});
$("#products").append("<li><a href='"+url+"' target='_top'><img src='"+item.image+"'></a>"
+"<br>"+item.Name+"<br>"+"$"+item.saleprice+"</li>");
});
});
这绝对可以清理,但为了清楚起见,我将其保留为与原始代码类似。 CodeReview.SE是改善正确代码的绝佳资源。
然后,在接收页面上,您需要获取data
参数的值。我建议使用jQuery BBQ:
$(function ()
{
var item = $.deparam.querystring().data;
// Item is now one of the items from the JSON on the previous page.
// Do whatever you need with it
});