0

I have a API php functions that executes a SQL query from the database and encodes the values in JSON.

eg

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() .'}}';
    }
}

The value on calling the URL http://localhost/getapicall/apikey in the browser is

{"Total":"80"}

In my front end HTML page using JavaScript, the API URL is called

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

But the value displayed is [object object] , how do I display the value of the json data i.e 80 in this case?

If I try putting

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

The value gets displayed as undefined.

3
  • I mean all the other answers are probably fine, but do you dare to venture another route and use $.getJSON(...)? ;) Commented Feb 14, 2017 at 7:12
  • Esteann Afonso check the answers below and if worked then mark that answer as accepted.Thanks Commented Feb 14, 2017 at 9:15
  • make sure to tag questions as jQuery, if you're looking for a jQuery solution. Commented Feb 15, 2017 at 3:12

2 Answers 2

1

$.get() is an asynchronous function, which means it won't return your data right away- it has to make a round trip to your server first.

Instead you pass it a function to be executed when the data is returned from your endpoint.

var myJSON = $.get('../v1/getapicall/default', function(result) {
    document.getElementById("txt1label").innerHTML = result.Total;
}));
Sign up to request clarification or add additional context in comments.

Comments

0

You need to pares your json data and also wait for the get request to complete. Get being asynchronous.

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

1 Comment

This is incorrect. $.get returns a promise, not the actual data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.