Ajax для загрузки содержимого другой php-страницы

У меня было два отдельных кода: 1. Одна форма, которая показывала содержимое базы данных при нажатии кнопки (form.php) 2. Другая php-страница, которая показывала диаграмму в div, извлекала содержимое из базы данных mysql при загрузке. (graph.php)

Я новичок в ajax. Я попытался показать диаграмму на div другой php-страницы (form.php), код которой присутствует в файле graph.php.

Проблема в graph.php, который показывает диаграмму при загрузке, использует идентификатор div, присутствующий на той же самой странице (graph.php), чтобы показать диаграмму. Как я могу загрузить эту страницу в div, присутствующий в form.php

form.php

<html><head><script>
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
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("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","graph.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<input type="submit"onclick="showUser(this.value)"/>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>

И еще одна страница, которая загружает данные из базы данных и показывает диаграмму с использованием API диаграмм Google, - это graph.php:

<?php
$q=$_GET["q"];
  $mysqli =mysqli_connect('127.0.0.1:3306', 'root', 'root', 'test');
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: ".mysqli_connect_error();
}

  $result = $mysqli->query('SELECT * FROM new_temp');
  $rows = array();
  $table = array();
  $table['cols'] = array(

    array('label' => 'ind_type', 'type' => 'string'),
    array('label' => 'sum', 'type' => 'number')

);
    /* Extract the information from $result */
    foreach($result as $r) {

      $temp = array();
      $temp[] = array('v' => (string) $r['ind_type']); 
      $temp[] = array('v' => (int) $r['sum']); 
      $rows[] = array('c' => $temp);
    }

$table['rows'] = $rows;
$jsonTable = json_encode($table);
?>
<html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {
var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
           title: 'Index analysis',
          is3D: 'true',
          width: 800,
          height: 600
        };
      var chart = new google.visualization.PieChart(document.getElementById('txtHint'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <!--this is the div that will hold the pie chart-->
    <div id="txtHint"></div>
  </body>
</html>

person user123    schedule 13.07.2013    source источник
comment
простите меня, если я не понимаю это правильно, но есть ли причина, по которой вы не можете использовать два разных идентификатора для каждого div?   -  person A.O.    schedule 13.07.2013
comment
также у вас есть лишний x в вашем последнем идентификаторе txxtHint   -  person A.O.    schedule 13.07.2013
comment
@ A.O .: Я использовал два разных ID. В этом случае график отображался в блоке div на странице graph.php.   -  person user123    schedule 13.07.2013
comment
@ A.O .: Я думаю, что одинаковые или разные идентификаторы здесь не проблема. проблема в другом, которую я не мог исправить!   -  person user123    schedule 13.07.2013


Ответы (1)


сначала вы должны сделать все данные с помощью json в файле php, включить jquery в html, затем использовать этот код: я надеюсь, что это поможет вам

HTML

<form action="graph.php" method="get">
  <input type="text" name="q" />
  <input type="submit"/>
</form>

js

$("form").on("submit", function(){
 $.get($('form').attr('action'), $('form').serialize(), 
     function(result) {
         $("#txtHint").html(result);
      },'json');
 });
person Ahmed Fathi    schedule 13.07.2013
comment
Моя цель - это не только решить эту проблему. Я пытаюсь изучить ajax. Возможно ли это без использования json? В противном случае, не могли бы вы сказать мне, куда мне вставлять json-код? - person user123; 13.07.2013
comment
на какую дату вы хотите получить его из базы данных? пришлите мне пример данных без js - person Ahmed Fathi; 13.07.2013
comment
Я пытаюсь получить значение индекса -ve и + ve для column - index_type and counts. Index type is pcount and ncount and both have int value. Я знаю, что без javascript это невозможно, но код, который вы дали, я не знаю, где разместить и как использовать. Я все еще изучаю js, json! - person user123; 13.07.2013