1

我在徘徊,如果有可能有 2 个或更多循环/每个循环一个 ajax 调用?我想要实现的是一张高尔夫记分卡,其中我在一个 json/ajax 调用中获取记分卡和球员的数据......

这是我获得记分卡的方法。

记分卡.php:

$scorecard = array();

$result = mysqli_query($con,"SELECT * FROM ga_turndata WHERE fk_turnid = 1 ORDER BY hole_no ASC LIMIT 18");
while($row = mysqli_fetch_array($result)){
    $scorecard[] = array('hole' => $row['hole_no'], 'par' => $row['par'], 'hcp' => $row['hcp']);
}

jquery获取数据:

$.getJSON('http://mypage.com/json/scorecard.php', function(data) {

        var array = [];

        $.each(data, function (i, val) {

            array.push($("#theholes").append("<li>"+val.hole+"</li>"));

        });
});

这部分就像一个魅力:-)。但是当尝试将其添加到 scorecard.php 时:

$scorecard[] = array('user' => 'Jane Doe', 'id' => '89', 'useraStrokes' => '5');
$scorecard[] = array('user' => 'Jemaine Dice', 'id' => '245', 'useraStrokes' => '17');
$scorecard[] = array('user' => 'Jimmie Gallon', 'id' => '16', 'useraStrokes' => '13');

然后,我当然要多获得 3 li... 无论如何我可以将这些分开还是应该进行两次 ajax 调用?一张给记分卡,一张给球员?

希望提前帮助和感谢:-)

4

3 回答 3

1

返回包含两个数组的单个 JSON 对象:scorecardplayers。然后,在您的 AJAX 成功回调中,您只需分别迭代它们:

$.getJSON('http://mypage.com/json/scorecard.php', function(data) {
    var array = [];
    $.each(data.scorecard, function (i, val) {
        array.push($("#theholes").append("<li>"+val.hole+"</li>"));
    });

    $.each(data.players, function(i, player) {
        // do something with this player
    });
});

PHP 端看起来像这样:

$scorecard = array();

$result = mysqli_query($con,"SELECT * FROM ga_turndata WHERE fk_turnid = 1 ORDER BY hole_no ASC LIMIT 18");
while($row = mysqli_fetch_array($result)){
    $scorecard[] = array('hole' => $row['hole_no'], 'par' => $row['par'], 'hcp' => $row['hcp']);
}

$players = array();

$players[] = array('user' => 'Jane Doe', 'id' => '89', 'useraStrokes' => '5');
$players[] = array('user' => 'Jemaine Dice', 'id' => '245', 'useraStrokes' => '17');
$players[] = array('user' => 'Jimmie Gallon', 'id' => '16', 'useraStrokes' => '13');

$data = array('scorecard' => $scorecard, 'players' => $players);

// possibly some other stuff?

return json_encode($data);

免责声明:我从未学过PHP,这只是基于从阅读SO中获得的粗略知识;对上述任何错误表示歉意。

于 2013-07-15T12:19:28.510 回答
0

最简单的方法,但不是最好的循环两次

 $.getJSON('http://mypage.com/json/scorecard.php', function(data) {

        var array = [];

        $.each(data, function (i, val) {

            array.push($("#theholes").append("<li>"+val.hole+"</li>"));

        });
    $.each(data, function (j, val) {

            array.push($("#scorecard").append("<li>"+val.user+"</li>"));

        });
});

如果是,则检查 val.user 或 val.hole 是否存在的更好方法构建 li 并将其保存在变量中,并且只有在循环之后才会追加

于 2013-07-15T12:15:24.073 回答
0

一种方法是使用相应数组中的值返回您的 ajax 调用,例如 $data['scorecards'=>$scorecards, 'users'=>$users ] 等。

在 jquery 中,只需分别从 data.scorecards 和 data.users 中获取记分卡和用户。

这避免了调用 ajax 两次。

于 2013-07-15T12:19:08.790 回答