0

この質問は多くの人に尋ねられ、過去3日間、さまざまな「解決策」を検討してきましたが、どれも私は仕事に取り掛かることができません。

JQuery MobileでListVIewとして表示したい巨大なJSONファイル(約15万エントリ)があります。(実際にデータを使用するためにフィルターを使用します)

私が思いついた最高のものはこれです

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/jqm-docs.css" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>




</head>

<body>
    <div data-role="page">
    <div data-role="content">
        <div id="output">
            <ul data-role="listview" data-inset="true" data-filter="true">

            </ul>
        </div>
    </div>
</div>


<script type="text/javascript">
        //simulating the JSON coming from the server
var json = '["City1","City2","City3"]';
//jQuery getJSON will do this step
var data = $.parseJSON(json);

//and this is your code
$.each(data, function (index, value) {
        $('#output').children('ul').append('<p>'+value+'</p>').listview('refresh');
});

</script> 

</body>
</html>

.listview('refresh')を削除すると、3つのJSONエントリすべてが同じListViewフィールドに一覧表示されます。私は明らかにそれらを分離して欲しい。

誰かがこれを行う方法についてアドバイスできますか?

感謝を込めて

ティム

4

3 に答える 3

2

最初に$.parseJSONを使用するには、適切なJSON文字列形式が必要です。

だから私はあなたの変数を推測します

var json = '["City1","City2","City3"]';

次のようになります。

var json = '{"city":"City1"},{"city":"City2"},{"city":"City2"}';

次に、JSONに変換する前に、最初に分割することをお勧めします

var jsonSplit = json.split(',');

配列内の分離されたすべての部分をJSONに変換します

var data = new Array(), i;
for(i in jsonSplit){
 if(jsonSplit[i].length){ //remove last empty element after .split()
  data[i] = $.parseJSON(jsonSplit[i]);
 }
}

data次に、javascriptオブジェクトとして操作できます

于 2012-06-10T22:56:39.800 に答える
1

li要素がありません。

$.each(data, function (index, value) {
        $('#output').children('ul').append('<li><p>'+value+'</p></li>').listview('refresh');
});
于 2012-06-10T21:49:59.933 に答える
1
$.each(data, function (index, value) {
        $('#output').children('ul').append('<li><p>'+value+'</p></li>').listview('refresh');
});

ここで行っていることに基づいてListview(refresh)を削除します。毎回更新する必要はありません。たとえばphpを介して動的に追加する場合は、最後に更新する必要があります。

$.each(data, function (index, value) {
        $('#output').children('ul').append('<li><p>'+value+'</p></li>');
});
于 2012-07-16T15:05:21.150 に答える