2011-07-10 25 views
0

OKこれは非常識な私を運転している..私は<ul>にウェブメソッドからJSONを解析しようとしてる 、ここで私が持っているものです:jQueryの解析JSON配列

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); 
    } 
} 

そして、ここではサンプルですWebMethod属性から返されるJSONの:

[{"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とし、せずに試してみた、私はちょうど助けてください...リストに入るカント! :)

答えて

2

jsonresultsとは何ですか?それはIDだ場合は、これでまた#

.appendTo('#jsonresults'); 

、忘れてしまった:あなたは、テキストコンテンツとして[object Object]を取得します

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

Nameが欲しいと思います。その場合は、次の操作を行います。

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

keyは、配列のインデックスであることに留意してください。 HTML4をサポートしている場合は、番号で始まるIDを持つことはできません。

あなたはそれを変更することがあります。

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

...または類似した何か。

例:http://jsfiddle.net/G8HqX/

+0

私の悪い、私は以前のテストとタグの名前ではなくIDでヘッドのクラスまたはID – Leigh

+0

乾杯を設定して、それを並べ替えられています。 val.Nameは私に未定義を与える..? – Leigh

+0

@Leigh:あなたの応答が正しく到着していることを確認しましたか? 'console.log(result)' – user113716