Запрос Json и передать переменную? - PullRequest
3 голосов
/ 07 июня 2011

Я извлекаю данные с помощью $.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>");
    });
});

1 Ответ

3 голосов
/ 07 июня 2011

Вы можете передать объект 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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...