如何在Ajax成功函数中区分数组值与PHP?

时间:2015-05-19 13:32:22

标签: javascript php ajax

我正在回应PHP中的两个数组值。如何在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);
        }
    });
}

我已经看过php的多个返回值的示例并在ajax中处理它们,但我并不理解它们。有人可以解释一下如何在我的情况下区分输出值吗?

输出:

[[{"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"}}]

1 个答案:

答案 0 :(得分:1)

一个不错的做法是只发送一个值流,以便您可以一次处理所有值。

首先,您可以创建一个容器数组:

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

然后

echo json_enconde($data);

这将生成合并输出。

PHP代码返回的编码字符串需要在客户端进行解码(更多详细信息:Parse JSON in JavaScript?)。因此,您可以使用$ .getJSON(),这是对$ .ajax(doc:http://api.jquery.com/jquery.getjson/)的特定调用的别名。

成功'功能会传递一个' =>'值'数组数据。在这种情况下,您需要处理该值,因为它们可能包含额外级别的数组。如果您可以将数据结构可视化为树视图,则会有所帮助,例如:http://jsonviewer.stack.hu/(将输出粘贴到那里)。

我希望它有所帮助!