Вы можете передать объект 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?"}'
, а затем URL-кодирование:
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'
, а затем добавьте его в строку запроса URL-адреса. Если у вас есть такой якорь:
<a id="next" href="next/page">Next Page</a>
вы можете изменить его с помощью jQuery следующим образом:
var $next = $('#next'),
url = $next.prop('href') + '?data=' + encodedStrData;
$next.prop('href', url);
Получающая страница должна будет распаковать данные в URL, если они есть.
... или вы можете просто передать какой-то идентификатор предмета:
<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
});