将值添加到数组php然后将json放入ajax

时间:2013-01-26 03:20:16

标签: php ajax

各位我仍然有一个关于附加到数组的问题然后把它放在json中让我在ajax中使用它是我的代码。

global $school_id;

        $get_section = "SELECT *
                        FROM section a
                        LEFT JOIN advisory_sections b ON(a.section_id = b.section_id)
                        LEFT JOIN school_faculty c ON (b.faculty_id = c.faculty_id)

                        WHERE a.school_id = '$school_id'  ORDER BY section_level ASC";





                        $result=mysql_query($get_section)or die(mysql_error());

                            $i=0;

                                $data=array();
                    while ($row = mysql_fetch_array($result))
                                {
                                    $data[] = array(
                                       'sec_id'=>$row['section_id'],
                                       'sec_name'=>$row['section_name'],
                                       'sec_dept'=>$row['section_department'],
                                       'sec_lvl'=>$row['section_level'],
                                      'advisory_id'=>$row['advisory_id'],
                                      'first_name'=>$row['f_firstname'],
                                      'last_name'=>$row['f_lastname'],
                                      'middle_name'=>$row['f_middlename'],
                                      'advisor_id'=>$row['faculty_id'],
                                    );


                    $get_subjects = "SELECT subject_name
                                        FROM subjects  
                                        WHERE level = '".$row['section_level']."' ";


                        $result_get_subjects =mysql_query($get_subjects)or die(mysql_error());

                        $subjects_count = mysql_num_rows($result_get_subjects);


                    $check_archive_subjects = " SELECT b.subject_name 
                                                FROM registrar_grade_archive a
                                                LEFT JOIN subjects b ON(a.subject_id=b.subject_id)

                                                WHERE a.advisor_faculty_id = '".$row['faculty_id']."'
                                                GROUP BY b.subject_name ASC
                                                 " ;

                     $query_checking =mysql_query($check_archive_subjects)or die(mysql_error());

                    $subjects_count_sent = mysql_num_rows($query_checking);



                                if($subjects_count_sent == $subjects_count){

                                        array_push($data, 'status:complete');
                                    }else{

                                        array_push($data, 'status:Incomplete');
                                    }


                                $i++;
                                }



        echo json_encode($data);

AJAX:

 function get_sections_status(){
     $.ajax({                
    url: 'teacher_class_get.php',
    dataType: 'json',
    type: 'POST', //u missed this line.
    data:{'func_num':'6'},
    success: function (data){
      $.each(data, function(i, item) {



        html = "<tr>";

                              html += "<td style='width:10%;'><input type='radio' name='section_id' rel='"+data[i].advisory_id+"' value='"+data[i].sec_id+"'></td>";
                              html += "<td style='width:25%;'><label>"+data[i].status+"</label></td>";
                              html += "<td style='width:15%;'><label id='year_level' rel='"+data[i].sec_lvl+"''>"+data[i].sec_lvl+"</label></td>";
                              html += "<td style='width:20%;'><label>"+data[i].sec_name+"</label></td>";
                              html += "<td style='width:30%;'><label id='faculty_id' rel='"+data[i].advisor_id+"'>"+data[i].last_name+", "+data[i].first_name+" "+data[i].middle_name+"</label></td>";                              
                              html += "</tr>";




       $('#table-sections-content').append(html);
       });

           }
      });

   }
   get_sections_status();

我得到了这种回应:

[{"sec_id":"36","sec_name":"black","sec_dept":"highschool","sec_lvl":"firstyear","advisory_id":"60","first_name":"asdf","last_name":"asdf","middle_name":"asdf","advisor_id":"1"},"status:Incomplete",{"sec_id":"32","sec_name":"level-up","sec_dept":"highschool","sec_lvl":"firstyear","advisory_id":"53","first_name":"asdf","last_name":"asdf","middle_name":"asdf","advisor_id":"1"},"status:Incomplete"

您可以看到状态不在数组中。这就是为什么我得到这种出局。

This is my out put

在我的输出我有一个状态但有其他未定义值的新行,其他有值但状态不确定..请帮助伙计们...提前感谢

1 个答案:

答案 0 :(得分:1)

您需要在数据结构的不同级别添加状态。

试试这个(见代码中的评论):

....
while ($row = mysql_fetch_array($result))
{
//Create a new item to add to $data later
    $item = array(
        'sec_id'=>$row['section_id'],
        'sec_name'=>$row['section_name'],
        'sec_dept'=>$row['section_department']
....

    //Add status to $item, rather than $data
    //I don't think array_push will give you what you want here
    if($subjects_count_sent == $subjects_count){
        $item['status']='complete';
    }else{
        $item['status']='incomplete';
    }
    //Add the new item after status has been set
    $data[]=$item;
    $i++;
}
....

是的,你应该看看切换到mysqli或PDO。