2013-07-15 14 views
1

我徘徊,如果它可能有2個或更多的循環/每個與一個Ajax調用?我試圖實現的是一個高爾夫記分卡,其中我得到了記分卡和玩家在一個json/ajax調用中的數據...多個循環與一個jquery ajax請求

這裏是我如何得到記分卡。

scorecard.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華里的更多...反正我有可以區分這些或我應該做一個AJAX調用兩次?一個用於記分卡,另一個用於玩家?

希望能幫助和在此先感謝:-)

+0

你可以走過你的'記分卡'數組並檢查鑰匙(孔或用戶)? – Pieter

回答

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獲得的粗略知識;對上述任何錯誤表示歉意。

+0

PHP部分的外觀如何? – Mansa

+0

@Mansa我從來沒有真正學過PHP,除了我通過閱讀SO上的問題和答案而獲得的東西。我可以嘗試一下(雖然可能會有一些小錯誤),但是您已經在您的問題中展示了所有必需的知識;你只是應用相同的概念。 –

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存在是建立李並將其保存在變量中,只有在循環後追加

0

一種方法是返回您的ajax調用相應數組中的值,例如$ data ['scorecards'=> $ scorecards,'users'=> $用戶]等。

在jquery中,分別從data.scorecards和data.users分別獲取記分卡和用戶。

這樣可以避免兩次調用ajax。

+0

不確定你的意思...我在哪裏使用$數據? – Mansa