1

次のコードを使用して、jQuery を使用して JSON から値を取得しています。

$(document).ready(function() {
            $.ajax({
                type : 'GET',
                url : 'outfitters.json',
                dataType : 'json',
                success : processTeam,
                error : function() {
                    alert('error');
                }
            });
        });

        function processTeam(data) {
            var company = data.company;
            $("h1").html(company);

            var locations;
            for ( i = 0; i < data.locations.length; i++) {

                locations += data.locations[i].name + "<br/>";

            }
            $("li").html(locations);

        }

実際、期待される出力が得られますが、次のように出力の開始時に「未定義」が追加されています。

undefinedKincardine
Killarney
Bon Echo

さらに、私はjQueryモバイルリストボックスを使用していますが、3つの別々のリストボックスに表示することになっていますが、1つのリストボックスにのみ値を入力しています。

<ul data-role="listview">
            <li>

            </li>

        </ul>

コードで行っている間違いはありますか?

4

4 に答える 4

1

最初に変数を初期化する必要があります。

var locations='';

初期化されていないデータを追加しようとしている場合。したがって、最初は未定義+youvalueになります。だからあなたundefinedKincardineは最初の結果を得る

于 2013-03-06T04:53:34.783 に答える
1

変数を初期化するvar locations = '';

于 2013-03-06T04:52:28.103 に答える
1

場所を初期化せずに使用したため、もちろん未定義のエラーメッセージが表示されます。

var locations = '';
于 2013-03-06T04:56:36.347 に答える
0

あなたのHTMLは以下のように見えると思います

<div data-role="page">
    <div data-role="header">
        <h1>header</h1>
    </div>
    <div data-role="content">
        <h2 id="companyName">my list</h2>
        <div id="locationList"></div>
    </div>
</div>

次に、次のようにするprocessTeam必要があります

var company = JSON.parse(data);

//setting company name
$('#companyName').text(company.company);

//setting the list view
//running a loop first
var locationsStr = "<ul data-role='listview'>";
$.each(company.locations, function(){
   locationsStr = locationsStr + "<li><a href='#'>"+this.name+"</a></li>";
});
locationsStr = locationsStr+ "</ul>";
$('#locationList').html(locationsStr);
$('#locationList ul').listview();

ここで動作するフィドルをチェックできますhttp://jsfiddle.net/eTpSQ/1/

于 2013-03-06T05:14:48.377 に答える