2016-08-05 56 views
0

我是一名初學者,我試圖回顯數組並將它們追加到我創建的html分支中。我所做的AJAX電話很成功,但答覆沒有出現在我分配給它的分部內。經過進一步檢查,我發現我收到的回覆數組長度超過600(我期待10條記錄)。所以我的回聲PHP文件或者HTML文件的接收端一定有些問題,但是卻無法弄清楚它是什麼。Javascript,PHP,AJAX:如何回顯數組並將它們追加到html分區中

這裏是我的代碼:

listdiscount.php

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli("localhost", "root", "root", "bencoolen"); 

$userid = $_GET['userid']; 

$result = $conn->query("select userid, codename from discountcode where userid ='" . $userid . "' "); 

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    printf("Userid: %s '' Codename: %s", $row["userid"], $row["codename"]); 
} 

$conn->close(); 
?> 

的index.html(與JS代碼)

<html> 
<script> 
    function mydiscount(){ 
          var userid = "jimmy"; 
          var xmlhttp = new XMLHttpRequest(); 
          var url = serverURL() + "/listdiscount.php"; 
          url += "?userid=" + userid; 
          alert(url); 
          xmlhttp.onreadystatechange=function() { 
           if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
            alert("readystate=4 and status =200"); 
            mydiscountresult(xmlhttp.responseText); 
           } 
           } 
           xmlhttp.open("GET", url, true); 
           xmlhttp.send(); 
         } 

         function mydiscountresult(response) { 
          var arr = response; 
          alert(arr);   //alerted 
          alert(arr.length); //alerted 600+ arrays 
          alert("mydiscountresult working"); //alerted 
          var i; 
          $("#discountcontent").empty(); 
          for(i = 0; i < arr.length; i++) { 
          $("#discountcontent").append("<b>" + arr[i].userid + "</b>"+ arr[i].codename + "<hr>"); 
          } 
         } 

         mydiscount(); 
</script> 

        <div data-role="content" class="ui-content" id="discount"> 
        LIST OF DISCOUNT CODE:<br> 
        <div id="discountcontent" class="ui-grid-solo"> 
        </div> 
        </div> 
</html> 

這裏是我的迴應是什麼驚動時,如:

補充說明:我的php文件位於不同的文件夾中,所以serverurl()被聲明和使用 這裏。

+0

看來,應對缺什麼? – technico

+0

嘗試控制/提醒arr [i] .userid等的值,並檢查控制檯是否有錯誤報告。 –

+0

確定我會在幾分鐘內提醒陣列用戶ID!也加入了反應,我忘了! –

回答

0

獲取請求返回一個json數組,因此您需要使用json解析將其轉換爲正常數組。你可以請更改代碼行爲

mydiscountresult(JSON.parse(xmlhttp.responseText)); 

它會正常工作。

0

功能xmlhttp.responseText retun a 字符串,對不對?

您將此字符串轉換爲函數mydiscountresult並將其複製到變量var中。它仍然是字符串,不是嗎?

所以提醒做工精細,並在那裏做的工作在字符串(長度600等)

然後你走在這個逐個字母(這是你的for循環是做什麼的)。在每封信var[i]上,您都會嘗試閱讀userid。我認爲沒有一個普通的信件(calld char)有一個名爲userid的房產。所以這導致一個空字符串。我想你想從字符串xmlhttp.responseText獲得數組。爲此,你只要讓JSON解析這個字符串,它給了你一個對象

JSON.parse(xmlhttp.responseText)

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

相關問題