JQuery Parse JSON Array - PullRequest
       4

JQuery Parse JSON Array

0 голосов
/ 10 июля 2011

ОК, так что это сводит меня с ума .. Я пытаюсь проанализировать JSON из веб-метода в <ul>, вот что я получил:

function searchPostcode() {
    var search = $("#txtPostcode").attr("value");
    //alert(search);
    $.ajax({
        type: "POST",
        url: "DeliverySettings.aspx/getDeliveryInfoForPostcode",
        contentType: "application/json; charset=utf-8",
        data: "{'postcode':'" + search + "'}",
        dataType: "json",
        success: AjaxSucceeded,
        error: AjaxFailed
    });

    function AjaxSucceeded(result) {
        var items = [];

        $.each(eval(result), function (key, val) {
            items.push('<li id="' + key + '">' + val + '</li>');
        });

        $('<ul/>', {
            'class': 'my-new-list',
            html: items.join('')
        }).appendTo('jsonresults');

    }
    function AjaxFailed(result) {
        alert(result.status + ' ' + result.statusText);
    }
}

А вот пример JSON, возвращенного из WebMethod:

[{"Name":"Full Pallet","Price":"90.0000"},{"Name":"Half Pallet","Price":"60.0000"},{"Name":"Quarter Pallet","Price":"40.0000"},{"Name":"Small Parcel","Price":"30.0000"},{"Name":"Medium Parcel","Price":"20.0000"},{"Name":"Large Parcel","Price":"10.0000"}]

Я пробовал с и без eval безрезультатно, я просто не могу попасть в список ... Пожалуйста, помогите! :)

1 Ответ

2 голосов
/ 10 июля 2011

Что такое jsonresults?Если это идентификатор, вы забыли #

.appendTo('#jsonresults');

Кроме того, с этим:

items.push('<li id="' + key + '">' + val + '</li>');

вы получите [object Object] в качестве текстового содержимого.Я полагаю, вы хотите Name.Если это так, сделайте следующее:

items.push('<li id="' + key + '">' + val.Name + '</li>');

Также имейте в виду, что key является индексом массива.Если вы поддерживаете HTML4, недопустимо иметь идентификатор, начинающийся с цифры.

Возможно, вы захотите изменить его на:

items.push('<li id=product_"' + key + '">' + val.Name + '</li>');

... или что-то ещеаналогично.

Пример: http://jsfiddle.net/G8HqX/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...