Firefox & İşleri

0 Cevap php

1) Bu sorun sadece bir html web sayfası içerir, "ajax.html" diyoruz sağlar.

2) Ben Firefox ve IE8 hem de çalışmak bu web sayfasındaki AJAX işlevleri vardır.

3) Şimdi benim ajax fonksiyonları kullanarak tarihlerini açılan listesinde sadece seçenek değerlerini üreten girişimi, ve Firefox & çalışır Opera, ama IE8.

4) açılan için çevreleyen html kod şöyle görünür:

<select name="entry_7_single" id="entry_7" onChange="Ajax_PhpResultsWithVar('./secure/db/SummaryCls.php','entry_8','dateval',this.value)"></select>

Onchange çağrısı başarıyla (Firefox ve IE8 ikisi) bu açılan seçilen tarih ile ilişkili bir olayın bir açıklama ile bir textarea (entry_8) dolduran bir ajax işlevi ifade eder.

5) Bir onload çağrısı açılan liste değerlerini oluşturmak için ajax işlevini başlatır:

<body class="ss-base-body" onLoad="OnLoadWebPage()">

Aşağıdaki gibi 6) ajax işlevini çağırır js script:

function OnLoadWebPage()
{
    Ajax_PhpResults('./secure/db/GenDateListCls.php','entry_7');
}

7) bu yana Firefox'ta çalışır, ancak IE8, ben bir Firefox büyük metin içine ajax fonksiyonunun çıkışını atmak ve ben şu olsun:

<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) Orada oluşturulan bir yüz bitti ama ajax fonksiyon oluşturur ne yüreğin olsun. Sonraki Ben yukarıdaki açılan değerlerini verir PHP işlevi listeler:

<?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) İşte ajax fonksiyonları I (tabii ki, bazı bölümleri web kapalı örneklerden değiştirilmiş) oluşturulan ve kullanılan şunlardır:


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); 
}

Ben bu konuda herhangi bir yardım için teşekkür ederiz.

My Background: To let you all know, I am a complete newbie to PHP, Ajax, & javascript, and learning it all on my own, no classes. My background is in Linux, Windows, C++, Java, VB,VBA,MS XML, & some html.

0 Cevap