Kiran Muralee
Kiran Muralee

Reputation: 2060

Value showing undefined when trying to output data returned as json from server

I am new to Yii2 framework and PHP.I used Mongo DB as the backend database.I fetched a document from a collection and returned the data as Json from the controller.The data returned back is given below.

{
    "55b08c383e1a36233fdbdc06": { 
        "_id": { "$id": "55b08c383e1a36233fdbdc06" }, 
        "address": [ "abcdgt", "zxcv" ], 
        "age": "23", 
        "email": [ "[email protected]","[email protected]" ], 
        "location": "kollam", 
        "name": "ajiths",
        "phoneno": [ "9522585456", "7875642256" ] ,
        "sex": "male" 
     }
}

But I am getting 'Undefined' when trying to alert result.name in Javascript code.The code at the front end is given below.

function loadClient(id){
         url = "<?=  Yii::getAlias('@serverpathweb')?>/client/showclient?id="+id;
           $.ajax({
          url: url ,
          method: "GET",
           success: function(result){
             alert(result.name);

                 }
             });
    }

The code at the controller end is given below.

public function actionShowclient($id) {

       $clientdetail = Yii::$app->mongodb->getCollection('client');
       $result = $clientdetail->find(["_id" =>$id]);
       Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
       return $result;
    }

Can anyone tell me how to get the value result.name.

Upvotes: 2

Views: 1009

Answers (2)

Ghazgkull
Ghazgkull

Reputation: 980

Your "result" object is probably a String because you're not telling jQuery otherwise. Trying adding the option dataType:json to your request as in:

$.ajax({ url: url, method: 'GET', dataType: 'json', etc...

Edit: It also looks like there's a simple bug in your code. You need to access your property where it's nested in the resulting object:

result[id].name

Upvotes: 0

Nagesh Sanika
Nagesh Sanika

Reputation: 1090

your getting JSON result with id as key so access ur JSON data like this first get the key of ur JSON using Object.keys next using key print the values you need

var id=Object.keys(result)[0]; //it will print your JSON key i.e. "55b08c383e1a36233fdbdc06"

alert(result[id]['name']); // it will print the name

Note if you are getting multiple user details please let me know

Upvotes: 5

Related Questions