【问题标题】:Highcharts are not working through AJAXHighcharts 无法通过 AJAX 工作
【发布时间】:2014-03-14 07:59:54
【问题描述】:

这是我的代码,我面临的问题是:- 这是来自页面的值:-

    <?php 
    $avail=$_REQUEST['avail'];
    $issued=$_REQUEST['issued'];
    $bind=$_REQUEST['bind']; 
    ?>
    <script type="text/javascript">

    $(function () {
        $('#books_status').highcharts({
            chart: {
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Books Status'
            },
            tooltip: {
                pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        format: '<b>{point.name}</b>: {point.percentage:.1f} %'
                    }
                }
            },
            series: [{
                    type: 'pie',
                    name: 'Status',
                    data: [
                        ['Availabe', <?php echo $avail; ?>],
                        ['Issues', <?php echo $issued; ?>],
                        ['Binding', <?php echo $bind; ?>]
                    ]
                }]
        });
    });
    </script>
    <div id="books_status"></div>

现在的问题是,通过从页面获取值并在上面的脚本中传递这些值,我们无法生成图表。

请提出建议。

================================================ ============================================

更新问题:

这是我的第一个 HTML 页面,在该页面上我有一个 Ajax 函数:libraryData('1')- 通过这个函数我在这个页面上获取数据。 HTML页面代码:

    <?php include_once 'library-header.php'; ?>
    <div class="col-md-10" id="container"><!-- container -->
    <div class="row" id="row-c1">
    <div class="col-md-12" id="content">
        <!-- Nav tabs -->
        <ul class="nav nav-tabs">
            <li class="active">
                <a href="#panel-1" data-toggle="tab" onclick="libraryData('1')">Books Management</a>
            </li>
        </ul>

        <div class="tab-content">
            <div class="tab-pane active" id="panel-1">
                <div class="row" id="option">
                    <div class="col-md-6 padding0px">
                        <select name="status" id="status" class="form-control" onchange="getLibraryBooks(this.value, '1');">
                            <option value="-1">Select Status </option>
                            <option value="1">Available</option>
                            <option value="2">Issue</option>
                            <option value="3">Binding</option>
                        </select>
                    </div>
                    <div class="col-md-6"></div>
                </div>
                <div class="row" id="library_data1"></div>
            </div>
        </div>
    </div>
    <?php

    include_once 'library-footer.php';

    ?>

这是我收到第一个页面请求的第二个页面:

    <div class="col-md-6">

<table class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>Book Number</th>
            <th>Book Title</th>
            <th>Author</th>
            <th>Book Location</th>
            <th>Status</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
            <?php
            $status=-1;
            if(isset ($_REQUEST['status']))
                $status=$_REQUEST['status'];

            if($status!=-1) {
                $query1="select library_books.lib_book_id book_id,library_books.lib_book_title as book_title,library_books.lib_book_author as  book_author,
library_books.lib_book_tag_id as book_tag , library_books.lib_book_status as book_status,library_racks.lib_racks_name as rack_name,
library_departments.lib_department_name as department
From  library_books,library_racks,library_departments
Where library_books.lib_rack_id=library_racks.lib_racks_id
AND library_racks.lib_department_id=library_departments.lib_department_id
AND lib_book_status=$status
Order By library_books.lib_book_id";
            }
            elseif($status==-1) {
                $query1="select library_books.lib_book_id book_id,library_books.lib_book_title as book_title,library_books.lib_book_author as  book_author,
library_books.lib_book_tag_id as book_tag , library_books.lib_book_status as book_status,library_racks.lib_racks_name as rack_name,
library_departments.lib_department_name as department
From  library_books,library_racks,library_departments
Where library_books.lib_rack_id=library_racks.lib_racks_id
AND library_racks.lib_department_id=library_departments.lib_department_id
Order By library_books.lib_book_id";
            }

            $result1=mysql_query($query1);
            $counter=mysql_num_rows($result1);
            $p=($counter/20)+1;
            $p=floor($p);
            if(($counter%20)==0)
                $p=$p-1;
            $count=0;
            if(isset ($_REQUEST['pid'])) {
                $id=$_REQUEST['pid'];
                $k=$id;
            }
            else {
                $id=0;
                $k=0;
            }
            $j=$k*20;

            $avail=0;
            $issued=0;
            $bind=0;

            $query=$query1."";

            $result=mysql_query($query);
            $count=mysql_num_rows($result);
            $i=1;
            while ($row=mysql_fetch_array($result)) {
                ?>
        <tr>
            <td>
                        <?php echo $row['book_id']; ?>
            </td>
            <td>
                        <?php echo $row['book_title']; ?>
            </td>
            <td>
                        <?php echo $row['book_author']; ?>
            </td>
            <td>
                        <?php echo $row['rack_name']; ?>
            </td>
            <td>
                        <?php
                        if($row['book_status']==1) {
                            echo "Available";
                            $avail++;
                        }
                        elseif($row['book_status']==2) {
                            echo "Issue";
                            $issued++;
                        }
                        elseif($row['book_status']==3) {
                            echo "Binding";
                            $bind++;
                        }
                        ?>
            </td>
            <td>
                <a href="library-book-issue-info.php?book_id=<?php echo  $row['book_id']; ?>&status=<?php echo $row['book_status'];?>">View Book Info</a>
            </td>
        </tr>
                <?php
                $i++;
            }
            ?>
    </tbody>
    <tfoot>
        <tr>
            <td colspan="3">
                <b>
                    Total Results: <?php echo $counter; ?>
                </b>
            </td>
            <td colspan="3">
                    <?php
                    for( $i=0;$i<$p;$i++) { ?>
                <a href="javascript:paging('<?php echo $i; ?>','<?php echo $_REQUEST['page_id']; ?>', '<?php echo $_REQUEST['tab']; ?>','1');"><?php echo $i+1 ?></a>
                        <?php  } ?>
            </td>
        </tr>
    </tfoot>
    </table>

    </div>
    <div class="col-md-6">
    <script type="text/javascript">

    $(document).ready(function()
    {
        $('#books_status').highcharts({
            chart: {
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Books Status'
            },
            tooltip: {
                pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        format: '<b>{point.name}</b>: {point.percentage:.1f} %'
                    }
                }
            },
            series: [{
                    type: 'pie',
                    name: 'Status',
                    data: [
                        ['Availabe', <?php echo $avail; ?>],
                        ['Issues', <?php echo $issued; ?>],
                        ['Binding', <?php echo $bind; ?>]
                    ]
                }]
        });
    });

    </script>


    <div id="books_status" style="height: 400px; margin: 0 auto;"></div>

    </div>

================================================ ================================ AJAX 函数:

    function libraryData(subtab)
    {
    var page_id=document.getElementById("page_id").value;
    var tab=document.getElementById("tab").value;
    var xmlhttp;

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("library_data"+subtab).innerHTML=xmlhttp.responseText;
    }
    }

    xmlhttp.open("GET","library-data-table.php?page_id="+page_id+"&tab="+tab+"&    subtab="+subtab,true);
    xmlhttp.send();
    }

【问题讨论】:

  • 您确定 $_REQUESTS 返回正确的值吗?如果它们是正确的,请回显它们以查看它们。如果没有,您的数据传递有问题。
  • 数值没有问题。页面返回正确的值。
  • 我会发布一个更长的答案来解释可能是什么原因。
  • 你的php变量返回的是数字还是字符串?
  • 您只需要粘贴呈现的 HTML 源代码,以及所有数据和 JS。不是 PHP 和 SQL 查询。

标签: javascript php mysql highcharts


【解决方案1】:

您是否也在文件中包含了 highcharts.js? 也尝试使用 $ 文件准备就绪。

代码应该是这样的:

     <?php 
        $avail=$_REQUEST['avail'];
        $issued=$_REQUEST['issued'];
        $bind=$_REQUEST['bind']; 
        ?>
     <script src="highcharts/highcharts.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
     $('#books_status').highcharts({
                chart: {
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: 'Books Status'
                },
                tooltip: {
                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: true,
                            color: '#000000',
                            connectorColor: '#000000',
                            format: '<b>{point.name}</b>: {point.percentage:.1f} %'
                        }
                    }
                },
                series: [{
                        type: 'pie',
                        name: 'Status',
                        data: [
                            ['Availabe', <?php echo $avail; ?>],
                            ['Issues', <?php echo $issued; ?>],
                            ['Binding', <?php echo $bind; ?>]
                        ]
                    }]
            });
    });
    </script>
  <div id="books_status"></div>

【讨论】:

  • 我在标题页中包含所有 js 文件,并在我的页面中替换了上面的代码,但图形没有呈现。
  • 如果您使用任何类型的调试,它会返回任何错误吗? Chrome 调试或 Firefox 萤火虫?或者也许.... 为您的 div 提供宽度和高度。这对我有用,但你也应该给宽度。
  • 不,它不工作,结果不显示......所以请给我建议任何其他的想法,请我需要它......
  • 您能否使用 AJAX 发回的 HTML 的完整源代码更新您的问题?然后我就可以看一遍,找出问题所在。
  • 这是我的第一个 HTML 页面,上面有一个 ajax 函数:libraryData('1')
猜你喜欢
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多