2015-05-20 24 views
1

JS代碼:如何在Ajax調用中獲得兩個數組?

$.ajax({ 
     url: 'assignavailtrainers.php', 
     data: {action:'test'}, 
     type: 'post', 
     success: function(data) { 

     } 
}); 

PHP代碼:

<?php 
    $username = "trainerapp"; 
    $password = "password"; 
    $hostname = "localhost"; 
    $link = @mysql_connect($hostname, $username, $password); 

    if(@mysql_select_db("trainer_registration")) 
{ 

    $select_query_num = @mysql_query("select program_id,facilitator_id,availability_status from program_facilitator where availability_status in (1,2)"); 
    $select_query_name = @mysql_query("select facilitator_id,firstname,lastname,email_id from facilitator_details"); 
    $num_rows = @mysql_num_rows($select_query_num); 
    $trainerdetails = []; 
    $traineravaildetails = []; 
    $i = 0; 
    $j = 0; 
    while($row = @mysql_fetch_assoc($select_query_num)) 
    { 

     $trainerdetails[$i]['pgidi'] = $row['program_id']; 
     $trainerdetails[$i]['facilitatorid'] = $row['facilitator_id']; 
     $trainerdetails[$i]['avail_status'] = $row['availability_status']; 
     $trainerdetails[$i]['idi'] = $row['facilitator_id']; 

     $i++; 
    } 


     while($row1 [email protected]_fetch_assoc($select_query_name)) 
    { 
     $traineravaildetails[$j]['facilitatorid'] = $row1['facilitator_id']; 
     $traineravaildetails[$j]['firstname'] = $row1['firstname']; 
     $traineravaildetails[$j]['lastname'] = $row1['lastname']; 
     $traineravaildetails[$j]['emailidvalue'] = $row1['email_id']; 
     $j++; 
    } 
    echo json_encode(array('result1'=>$trainerdetails,'result2'=>$traineravaildetails)); 
} 
?> 

請幫我在阿賈克斯成功功能區的代碼。我試過使用initChart2,但我得到一個錯誤,說initChart2沒有定義。我似乎並不瞭解如何從ajax中獲取兩個PHP數組,因爲我是一個新手ajax。如果有人能幫我解釋代碼,那會很棒。而且我還需要知道如何區分從PHP發送的ajax中的輸出。

+1

不要使用'mysql_ *'函數,因爲它們已被棄用了很長時間,並且將在幾個月內被PHP7刪除。改用PDO或mysql ** i **。 – TiMESPLiNTER

+0

檢查響應console.log(data.toSource());也爲ajax設置數據類型 –

+0

我試過console.log(data.toSource());之前..但沒有工作..任何其他方法? –

回答

1

你有兩個選擇:

第一個是簡單地分析收到(文本)數據,以JSON :

var jsonData = JSON.parse(data); 
// or simply data = JSON.parse(data); 

但我最好的一個在我的oppinion是特定ŸJSON數據類型來的$。阿賈克斯()請求:

$.ajax(
    data: {action:'test'}, 
    type: 'post', 
    dataType: 'json', 
    success: function(data) { 
     ... 
    } 
}); 

這樣,$。阿賈克斯()也會檢查接收到的JSON數據和錯誤回調的有效性將被調用,而不是一個成功的情況下,收到錯誤的JSON數據。

...也很重要,要注意你錯過發送JSON Content-Type頭在你的PHP搭配:

header("Content-Type: application/json"); 

發送這個頭的數據類型:「JSON」參數不再是(嚴格)因爲$ .ajax()默認會根據收到的內容類型猜測它。但是,我個人更喜歡做這兩件事。

請參閱$.ajax() documentation

+1

謝謝你的答案..有用(y) –

1

你忘了:

header("Content-Type: application/json"); 

...在你的PHP。

在輸出JSON時,您告訴瀏覽器它是HTML(這是PHP的默認設置),因此jQuery不會將其轉換爲有用的數據結構。

補充說,然後你應該能夠訪問data.result1data.result2

+0

它工作了! :) –

0

要獲得AJAX數據:

$.ajax({ 
     url: 'assignavailtrainers.php', 
     data: {action:'test'}, 
     type: 'post', 
     success: function(data) { 
      data.result1; 
      data.result2; 
     } 
}); 

您可以使用console.log(data);查看數據結構

+0

最簡單的答案!這一個工程太.. :) –

相關問題