-1

I am echoing two array values from PHP. How do I differentiate these values in ajax.

if(@mysql_select_db("trainer_registration"))
{

    $select_query_num = @mysql_query("select program_id,facilitator_id,availability_status from program_facilitator");
    $select_query_name = @mysql_query("select facilitator_id,firstname,lastname,email_id from facilitator_details");
    $num_rows = @mysql_num_rows($select_query_num);
    $trainerdetails = [];
    $traineravaildetails = [];
    $i = 0;
    while($row = @mysql_fetch_assoc($select_query_num))
    {

        $trainerdetails[$i]['pgidi'] = $row['program_id'];
        $trainerdetails[$i]['facilitatorid'] = $row['facilitator_id'];
        $trainerdetails[$i]['avail_status'] = $row['availability_status'];
        $trainerdetails[$i]['idi'] = $row['facilitator_id'];

        $i++;
    }

        while($row1 =@mysql_fetch_assoc($select_query_name))
    {
        $traineravaildetails[$i]['facilitatorid'] = $row1['facilitator_id'];
        $traineravaildetails[$i]['firstname'] = $row1['firstname'];
        $traineravaildetails[$i]['lastname'] = $row1['lastname'];
        $traineravaildetails[$i]['emailidvalue'] = $row1['email_id'];
        $i++;
    }

    echo json_encode($trainerdetails);
    echo json_encode($traineravaildetails); 
}
?>
function loadavailabletrainers (m) {
    $.ajax({
        url: 'assignavailtrainers.php',
        data: { action:'test' },
        type: 'post',
        success: function(output) {
            console.log(output);
        }
    });
}

I've seen a examples of multiple return values from php and handling them in ajax, but I didn't understand them. Can someone please explain how to differentiate output values in my case?

OUTPUT:

[[{"pgidi":"3","facilitatorid":"2","avail_status":"1","idi":"2"},{"pgidi":"3","facilitatorid":"1","avail_status":"2","idi":"1"},{"pgidi":"3","facilitatorid":"2","avail_status":"1","idi":"2"},{"pgidi":"3","facilitatorid":"1","avail_status":"2","idi":"1"},{"pgidi":"3","facilitatorid":"2","avail_status":"1","idi":"2"},{"pgidi":"3","facilitatorid":"2","avail_status":"1","idi":"2"},{"pgidi":"3","facilitatorid":"2","avail_status":"2","idi":"2"}],{"7":{"facilitatorid":"1","firstname":"Vignesh","lastname":"Anand","emailidvalue":"v*******@gmail.com"},"8":{"facilitatorid":"2","firstname":"Vignesh","lastname":"Anandakumar","emailidvalue":"vign*****@gmail.com"},"9":{"facilitatorid":"3","firstname":"Vignesh","lastname":"Anand","emailidvalue":"v*****@hotmail.com"},"10":{"facilitatorid":"4","firstname":"Vignesh","lastname":"Anand","emailidvalue":"****@live.com"}}]
Braiam
  • 1
  • 11
  • 47
  • 78
Vignesh Anandakumar
  • 167
  • 1
  • 3
  • 12

1 Answers1

1

It's a nice practice to send only one stream of values so you can process it all at once.

First, you could create a container array:

$data = array('trainerdetails'      => $trainerdetails, 
              'traineravaildetails' => $traineravaildetails);

Then

echo json_enconde($data);

This will generate a merged output.

The encoded string returned by your PHP code needs to be decoded in the client side (more details: Parse JSON in JavaScript?). Because of that, you could use $.getJSON(), which is an alias for a specific call to $.ajax (doc: http://api.jquery.com/jquery.getjson/).

The 'success' function will pass a 'key'=>'value' array data. In this case you'd need to treat the value as they may contain extra levels of arrays. It helps if you can visualize your data structure as tree view, like this: http://jsonviewer.stack.hu/ (paste your output there).

I hope it helps!

Community
  • 1
  • 1
chaws
  • 181
  • 7