1) Эта проблема включает только одну веб-страницу html, позволяет называть ее «ajax.html».Работает в Firefox и Opera, но не в IE8
2) У меня есть функции AJAX на этой веб-странице, которые работают как в Firefox, так и в IE8.
3) Теперь я пытаюсь генерировать только значения параметров выпадающего списка дат, используя мои функции ajax, и работает в Firefox & Opera, но не IE8.
4) Окружающий HTML код выпадающего списка выглядит следующим образом:
<select name="entry_7_single" id="entry_7" onChange="Ajax_PhpResultsWithVar('./secure/db/SummaryCls.php','entry_8','dateval',this.value)"></select>
OnChange вызов относится к функции Ajax, которая успешно (как Firefox & IE8) Заполняет текстовое поле (entry_8) с описанием событие, связанное с датой, выбранной в этом раскрывающемся списке.
5) OnLoad вызов инициирует функцию Ajax для генерации значений раскрывающегося списка:
<body class="ss-base-body" onLoad="OnLoadWebPage()">
6) JS скрипт, который вызывает функцию Ajax выглядит следующим образом:
function OnLoadWebPage()
{
Ajax_PhpResults('./secure/db/GenDateListCls.php','entry_7');
}
7) Поскольку он работает в Firefox, но не в IE8, я бросаю вывод функции ajax в большое текстовое поле Firefox, и я получаю следующее:
<option selected value="8 JUN 2010">8 JUN 2010</option>
<option value="9 JUN 2010">9 JUN 2010</option>
<option value="10 JUN 2010">10 JUN 2010</option>
<option value="11 JUN 2010">11 JUN 2010</option>
8) Существует более сотни генерируемых, но вы получаете суть того, что генерирует функция ajax. Далее я перечислю функцию PHP, которая выводит указанное выше значение раскрывающегося:
<?php
include_once 'SPSQLite.class.php';
include_once 'misc_funcs.php';
class GenDateListCls
{
var $dbName;
var $sqlite;
function GenDateListCls()
{
$this->dbName = 'accrsc.db';
$this->ConstructEventDates();
}
function ConstructEventDates()
{
$this->sqlite = new SPSQLite($this->dbName);
$todayarr = getdate();
$today = $todayarr[mday] . " " . substr($todayarr[month],0,3) . " " . $todayarr[year];
$ICalDate = ChangeToICalDate($today);
$dateQuery = "SELECT dtstart from events where substr(dtstart,1,8) >= '" . $ICalDate . "';";
$this->sqlite->query($dateQuery);
$datesResult = $this->sqlite->returnRows();
foreach (array_reverse($datesResult) as $indx => $row)
{
$normDate = NormalizeICalDate(substr($row[dtstart],0,8));
if ($indx==0)
{
?>
<option selected value=<?php echo('"' . $normDate . '"'); ?>><?php echo $normDate; ?></option>
<?php
}
else
{
?>
<option value=<?php echo('"' . $normDate . '"'); ?>><?php echo $normDate; ?></option>
<?php
}
}
$this->sqlite->close();
}
}
$dateList = new GenDateListCls();
?>
9) Здесь находится Аякс функции, я создал и использовал (конечно, некоторые части были изменены из примеров от сети):
function Ajax_XMLHttpRequest_Factory()
{
var ajxRequest;
try
{
// Opera 8.0+, Firefox, Safari
ajxRequest = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer Browsers
try
{
ajxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
ajxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
// Something went wrong
alert("Unable to create an XMLHttpRequest with this current browser.");
return false;
}
}
}
return ajxRequest;
}
function Ajax_PhpResults(fname,elementID){
var ajaxRequest = Ajax_XMLHttpRequest_Factory();
// Create a callback function that will receive data sent from the server
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById(elementID);
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", fname, true);
ajaxRequest.send();
}
function Ajax_PhpResultsWithVar(fname,elementID,varpassed,value){
var ajaxRequest = Ajax_XMLHttpRequest_Factory();
// Create a callback function that will receive data sent from the server
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById(elementID);
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", fname+"?"+varpassed+"="+value, true);
ajaxRequest.send();
}
function Ajax_RunPhpOnly(fname){
var ajaxRequest = Ajax_XMLHttpRequest_Factory();
ajaxRequest.open("GET", fname, true);
ajaxRequest.send(null);
}
Я ценю любую помощь по этому вопросу.
Мой фон: Для того, чтобы вы все знаете, я полный новичок в PHP, Ajax, JavaScript & и обучения все это самостоятельно, нет классов. Мой фон находится в Linux, Windows, C++, Java, VB, VBA, MS XML, & некоторых html.
Можете ли вы показать код для ваших функций javascript Ajax_PhpResultsWithVar() и AjaxPHPResults(), пожалуйста? –
Можете ли вы показать нам свою функцию ajax, пожалуйста? – Babiker
в приведенных выше примерах атрибут value для опций является избыточным. значение по умолчанию будет соответствовать содержимому тега параметра. – SpliFF