繁体   English   中英

我如何在Ajax调用中获得两个数组?

[英]How do I get two arrays in Ajax call?

JS代码:

$.ajax({ 
         url: 'assignavailtrainers.php',
         data: {action:'test'},
         type: 'post',
         success: function(data) {

         }
 });

PHP代码:

<?php
    $username = "trainerapp";
    $password = "password";
    $hostname = "localhost";
    $link = @mysql_connect($hostname, $username, $password);

    if(@mysql_select_db("trainer_registration"))
{

    $select_query_num = @mysql_query("select program_id,facilitator_id,availability_status from program_facilitator where availability_status in (1,2)");
    $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;
    $j = 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[$j]['facilitatorid'] = $row1['facilitator_id'];
        $traineravaildetails[$j]['firstname'] = $row1['firstname'];
        $traineravaildetails[$j]['lastname'] = $row1['lastname'];
        $traineravaildetails[$j]['emailidvalue'] = $row1['email_id'];
        $j++;
    }
    echo json_encode(array('result1'=>$trainerdetails,'result2'=>$traineravaildetails));
}
?>

请帮助我使用ajax成功功能区域中的代码。 我尝试使用initChart2,但收到一条错误消息,提示未定义initChart2。 由于我是新手ajax,因此我似乎不太了解如何从ajax中的PHP获取两个数组。 如果有人可以在代码解释方面为我提供帮助,那就太好了。 而且我还需要知道如何区分从PHP发送来的ajax输出。

你忘了:

header("Content-Type: application/json");

…在您的PHP中。

在输出JSON时,您是在告诉浏览器它是HTML(PHP的默认设置),因此jQuery不会将其转换为有用的数据结构。

添加它,然后您应该能够访问data.result1data.result2

您有两种选择:

第一个是简单地将接收到的(文本)数据解析为JSON:

var jsonData = JSON.parse(data);
// or simply data = JSON.parse(data);

但是我认为最好的方法是为$ .ajax()请求指定json dataType:

$.ajax(
    data: {action:'test'},
    type: 'post',
    dataType: 'json',
    success: function(data) {
        ...
    }
});

这样,$ .ajax()还将检查接收到的JSON数据的有效性,如果接收到错误的JSON数据,将调用错误回调而不是成功回调。

...也很重要,要注意您错过了通过以下方式在php中发送json内容类型标头:

header("Content-Type: application/json");

不再(严格)需要向此标头发送dataType:'json'参数,因为默认情况下$ .ajax()会根据接收到的内容类型猜测它。 但是,就我个人而言,我更喜欢两者都做。

参见$ .ajax()文档

获取ajax数据:

$.ajax({ 
         url: 'assignavailtrainers.php',
         data: {action:'test'},
         type: 'post',
         success: function(data) {
           data.result1;
           data.result2;
         }
 });

您可以使用console.log(data); 查看数据结构

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM