2016-03-24 12 views
0

私はhtmlで2つのテーブルを持っていますが、これはPHP経由でmySQLサーバに取り込まれるデータを書きたいと思います。私が意味を作るわけではない場合、あなたが私のjsファイルから見ることができるように、私はhtml <body>2つのajaxデータを同時に取得する

<script src="../bower_components/accounts/accounts.js"></script> 
<script src="../bower_components/accounts/userinfoRetrieval.js"></script> 

の内側に私の外部.jsファイルを宣言した

ウェブサイトへの比較的新しい、失礼、機能を自動負荷時に呼ばれますhtmlページの

私は2つのPHPファイルから同時にデータを取得しているので、データの競合があると思います。したがって、私のテーブルの値は正しく表示されません。ページの読み込み時にデータを取得して表示するにはどうすればよいですか?

var tableContents; 
var recipients = new Array(); 
getRecipients(); 

function getRecipients() { //get account related info 
     $.ajax({ 
      type: "GET", 
      url: "../bower_components/accounts/accounts.php", 
      dataType: "json", 
      data: { 
       json: JSON.stringify(recipients), 
      }, 
      success: function(response){ 
       recipients = response; 
       printData(recipients); 
      } 
     }); 
} 

function printData(recipients){ 
    var x = "0"; 

    for(var i in recipients){ 
     if (i%2 == 0){ 
      tableContents = $("<tr class=\"even gradeC\">"); 
      jQuery('#accountsBody').append(tableContents); 

     } 
     else{ 
      tableContents = $("<tr class=\"odd gradeX\">"); 
      jQuery('#accountsBody').append(tableContents); 
     } 
     tableContents.append($("<td style=\"padding-left:18px\"><input name=\"select\" type=\"checkbox\" value=\""+ i + "\"></td>")); 
     tableContents.append($("<td style=\"padding-left:18px\">" + recipients[i].recipientId + "</td>")); 
     tableContents.append($("<td style=\"padding-left:18px\">" + recipients[i].username + "</td>")); 
     tableContents.append($("<td style=\"padding-left:18px\">" + recipients[i].email + "</td>")); 
     tableContents.append($("<td style=\"padding-left:18px\">" + recipients[i].phoneNo + "</td>")); 

     if (recipients[i].status === x){ 
      tableContents.append($("<td style=\"padding-left:18px\">Unapproved</td>")); 
     } 
     else{ 
      tableContents.append($("<td style=\"padding-left:18px\">Approved</td>")); 
     } 
     tableContents.append($("</tr>")); 
    } 
    sorting(); 
} 

account.js userinfoRetrieval.js

var tableContents; 
var userInfo = new Array(); 

getuserInfo(); 


function getuserInfo() { //get account related info 
     $.ajax({ 
      type: "GET", 
      url: "../bower_components/accounts/userinfoRetrieval.php", 
      dataType: "json", 
      data: { 
       json: JSON.stringify(userInfo), 
      }, 
      success: function(response){ 
       userInfo = response; 
       printData(userInfo); 
      } 
     }); 

} 

function printData(userInfo){ 
    tableContents = $("<tr>"); 
    jQuery('#userinfoBody').append(tableContents); 

    tableContents.append($("<td>" + userInfo[0].userID + "</td>")); 
    tableContents.append($("<td>" + userInfo[0].username + "</td>")); 
    tableContents.append($("<td>" + userInfo[0].email + "</td>")); 
    tableContents.append($("<td>" + userInfo[0].dob + "</td>")); 
    tableContents.append($("<td>" + userInfo[0].phoneNo + "</td>")); 

    tableContents.append($("</tr>")); 
} 

enter image description here

最初の行(エリヤ)の代わりに現在あるものを、トップテーブルの上に置かれるべきです間違って置かれた。したがって、定義されていない値があります

+2

あなたが*正しく*表示されていない上ellaborateことはできますか? –

+0

申し訳ありませんが、写真を添付し​​ました –

+1

bowerコンポーネントフォルダ内にあなたのPHPファイルを持っているのはちょっと奇妙なものです。 –

答えて

2

printDataがグローバルスコープで2回宣言されることに心配します。名前の競合を避けるために名前を変更してみてください。

誤ってグローバル名前空間を汚染しないように、IIFEを使用し、strictを使用することをお勧めします。

生命維持: https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

厳格な使用: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

関連する問題