2017-02-14 64 views
0

我有一個API php函數,它執行SQL來自數據庫的查詢並對JSON中的值進行編碼。javascript中的API調用

function getApiCall(){ 
    $sql = 'SELECT * AS "Total" from tablename"'; 
    try { 
     $db = getConnection(); 
     $stmt = $db->prepare($sql); 
     $stmt->execute(); 
     $user = $stmt->fetch(PDO::FETCH_OBJ); 
     $db = null; 
     echo json_encode($user); 
    } catch(PDOException $e) { 
     echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    } 
} 

上調用URL http://localhost/getapicall/apikey在瀏覽器中的值是

{"Total":"80"} 

在我的前端HTML頁面中使用JavaScript,該API URL被稱爲

<script type="text/javascript"> 
var myJSON = $.get('../v1/getapicall/default'); 
document.getElementById("txt1label").innerHTML = myJSON; 
</script> 

但顯示的值是[object object],我該如何顯示值在這種情況下json數據(即80)?

如果我嘗試把

document.getElementById("txt1label").innerHTML = myJSON.Total; 

值上顯示爲未定義。

+0

我的意思是所有其他的答案可能是好的,但你敢冒險另一條路線,並使用['$ .getJSON(...)'(https://api.jquery.com/jQuery .getJSON /)? ;) – SpencerD

+0

Esteann Afonso檢查下面的答案,如果工作,然後將該答案標記爲accepted.Thanks –

+0

請務必將問題標記爲jQuery,如果您正在尋找一個jQuery解決方案。 –

回答

1

$.get()是一個異步函數,這意味着它不會馬上返回您的數據 - 它必須先返回到您的服務器。

而是傳遞一個函數,在從端點返回數據時執行該函數。

var myJSON = $.get('../v1/getapicall/default', function(result) { 
    document.getElementById("txt1label").innerHTML = result.Total; 
})); 
0

您需要削減您的json數據並等待獲取請求完成。獲得異步。

<script type="text/javascript"> 
$.get('../v1/getapicall/default', function(data) { 
    var obj = JSON.parse(data);  
    document.getElementById("txt1label").innerHTML = obj.Total; 
}); 
</script> 
+2

這是不正確的。 '.get'返回一個承諾,而不是實際的數據。 – bejado

+1

感謝確實改變了它 – Sameer