У меня проблема с моим сценарием ajax, и мне нужно загрузить страницу без обновления страницы. Основы на этом коде.Загрузите текущую страницу через Ajax в php
index.php
<div class="header-page" class="clearfix" role="banner">
<div class="container">
<img src="images/logo.png" />
</div>
</div>
<!-- end of HEADER -->
<form>
<div id="contents">
<div class="main-container">
<div class="container">
<table id="tableID">
<tr class="data-head">
<td>Name</td>
<td>Phase</td>
<td>Money 1</td>
<td>Money 2</td>
<td>Money 3</td>
</tr>
<?php
while ($row = mysql_fetch_row($result, MYSQL_BOTH)) {
$id = $row[0];
$companyname = $row[1];
$client = $row[2];
$package = $row[3];
$payment1 = $row[4];
$payment2 = $row[5];
$payment3 = $row[6];
echo '<tr id="'.$id.'">';
echo '<td><b>'.$client.'</b></td>';
echo '<td>';
echo '<select class="phase" onchange="trackPhases(this.value)">';
if($phase_status=='Design'){
echo '<option value="'.$phase_status.''.$id.'" selected>'.$phase_status.'</option>';
echo '<option value="Build-Out'.$id.'">Build-Out</option>';
echo '<option value="Launch'.$id.'">Launch</option>';
}
if($phase_status=='Build-Out'){
echo '<option value="Design'.$id.'">Design</option>';
echo '<option value="'.$phase_status.''.$id.'" selected>'.$phase_status.'</option>';
echo '<option value="Launch'.$id.'">Launch</option>';
}
if($phase_status=='Launch'){
echo '<option value="Design'.$id.'">Design</option>';
echo '<option value="Build-Out'.$id.'">Build-Out</option>';
echo '<option value="'.$phase_status.''.$id.'" selected>'.$phase_status.'</option>';
}
echo '</select>';
echo '</td>';
echo '</tr>';
}
?>
</table>
</div>
</div>
</div>
</form>
<div id="txtHint"></div>
И это мой Ajax скрипт. Я создал выпадающий элемент управления (только образец) в коде таблицы html. Когда я выбираю значение в выпадающем списке - select class="phase" onchange="trackPhases(this.value)
, он должен автоматически загружать страницу через Ajax, не обновляясь.
<script type="text/javascript">
function trackPhases(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","update.php?q="+str,true);
xmlhttp.send();
}
Мой index.php прекрасно, хотя. Но что-то не так с моим сценарием Ajax. Пожалуйста, помогите мне.
РЕДАКТИРОВАТЬ:
<?php
mysql_connect("localhost", "xx", "password");
mysql_select_db('database');
$query = "SELECT * FROM project";
$result = mysql_query($query);
?>
РЕДАКТИРОВАТЬ
РЕДАКТИРОВАТЬ update.php
<?php
mysql_connect("localhost", "xx", "password");
mysql_select_db('database');
$query = "SELECT * FROM project";
$result = mysql_query($query);
$q = $_GET['q'];
$id = ereg_replace("[^0-9]", "",$q);
$phase_status = preg_replace('/[0-9]+/', '', $q);
$sql = 'UPDATE project SET phase_status="'.$phase_status.'" WHERE id = '.$id;
$retval = mysql_query($sql);
if(! $retval){
die('Could not update data: ' . mysql_error());
}
?>
Какое указание у вас есть, что-то не так? Каким образом это не работает? Под «загрузкой страницы» вы подразумеваете замену всего содержимого страницы, как и во всем документе? Если вы так или иначе делаете это, почему бы не просто обновить? – David
Я проверяю сценарий и его штраф. При загрузке на другую страницу работает. xmlhttp.open ("GET", "? otherpage.php д =" + ул, правда); xmlhttp.send(); - но если я хочу загрузить только текущую страницу. Как это сделать? потому что на моей текущей странице у меня есть html-таблица, которая извлекает все данные в моей базе данных. Просто простой пинг из выпадающего меню и загружается с использованием ajax. – Jarich
Непонятно, что вы пытаетесь сделать. Что вы хотите сделать с ответом от 'otherpage.php'? Вы хотите показать эту страницу целиком? Только его часть? Вы хотите заменить его текущей? Только часть текущей страницы? Возможно, вы можете указать пример в вопросе с некоторым издевательством HTML о том, что находится на текущей странице, что находится на «другой странице» и что вы хотите получить конечный результат? – David