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 移动列表框,但它只在一个列表框中填充值,尽管它应该在三个单独的列表框中显示它。

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

            </li>

        </ul>

我在代码中犯了什么错误?

4

4 回答 4

1

初始化你的变量var locations = '';

于 2013-03-06T04:52:28.103 回答
1

您需要先初始化变量。

var locations='';

因为当您尝试附加未初始化的数据时。所以首先它将是 undefined + youvalue。所以你得到undefinedKincardine第一个结果

于 2013-03-06T04:53:34.783 回答
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 回答