Şimdi Ara

php-ajax ile yapılan sitenin IE 8.0 ile çalışma hatası

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
1
Favori
1.911
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar, merhaba. Şu an PHP-Mysql-AJAX kullanarak bir script yazıyorum. Şimdi bu scriptte, kullanıcıların girdiği mesaja diğer kullanıcılar katılıyorum ya da katılmıyorum gibi oy veriyorlar. Programlamayı yaparken güncel bütün tarayıcılarda deneyerek ilerliyorum (IE 8.0 , IE 8.0 64 bit, Ffox, chrome, opera, safari). Sitemi IE'de açınca bu oylama fonksiyonu doğru düzgün çalışmıyor. Mesela chrome'da bi oy kullanıp safari'de sayfayı yenileyince oylamanın son hali düzgün çıkıyor. IE'de ise sayfa yenilenmiyor. Programı açıp kapatınca sitenin son halini düzgün gösteriyor. Sonra orada bir oylama yapmaya kalksam onu da kaydetmiyor. Şimdi bu sorunu IE'nin hem 32 hem 64 bitinde yaşıyorum. XMLHTTPREQUEST sorgusunu şöyle yapıyorum.

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

    Bu kodları W3C nin sitesinden aldım, bir hata olduğunu sanmıyorum. Bir de şunu denedim:

    var ajaxRequest;


    ajaxRequest = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    try {
    ajaxRequest = new XMLHttpRequest();
    } catch(e) {
    ajaxRequest = false;
    }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
    try {
    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
    try {
    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
    ajaxRequest = false;
    }
    }
    }

    Bununla da IE açılınca sadece bir kere düzünce gösteriyor, sonra AJAX işlevlerine hiç tepki vermemeye başlıyor. Nerde hata yapıyor olabilirim?







  • jQuery kullanmamakla hata yapıyorsun,

    $.post("a.php", { data1: "data1", data2: 54 }, function(data, textStatus, XMLHttpRequest) {  

    });


    işte bu kadar kolay bi kütüphane. Sorunsuz, uyumlu.
  • Yukarıda bahsettiğim sorunla uğraşırken şöyle bir şeye rast geldim. Şimdi ben javascriptle yapmak istediğim oyla.php'ye get metodu ile pozitif olarak oylanacak mesajın id sini gönderme işini tarayıcıda adres çubuğunahttp://localhost/vit/oyla.php?pozitif=118 yazarak yolladım, neticede veritabanı üzerinde aynı işlemi yapması beklenir. Yok gene olmadı, İE'de sorun çıkarttı. Diğer bütün tarayıcılarda bunu girince veritabanında oy sayısı beklendiği gibi arttı. Ama İE'de olmadı. O zaman benim bu durumumda sorunun İE'nin javascript kodlarını doğru çalıştırmamasından değil, php sorgularını sorunlu göndermesinden kaynaklı olduğunu anladım sanırım. EasyPHP kullanıyordum. Bunun kurduğu APACHE'nin yapılandırması acaba İE den gelen sorgulamalarda sorun mu çıkartıyor. Böyle birşey başınıza geldi mi? Neyse ben şimdi hostgatordaki hostumda aynı scripti yükleyip ie'den çağıracam. Bakalım düzgün çalışırsa sorun benim bilgisayardaki sunucudadır.




  • quote:

    Orijinalden alıntı: sehlor

    jQuery kullanmamakla hata yapıyorsun,

    $.post("a.php", { data1: "data1", data2: 54 }, function(data, textStatus, XMLHttpRequest) {  

    });


    işte bu kadar kolay bi kütüphane. Sorunsuz, uyumlu.


    Hocam bu da PHP kullanmaya codeigniter kullanarak başlamak gibi olmaz mı? Önce dilin kendi yapısına hakim olup framework kullanımını sonra düşünmek daha mantıklı gibi geliyor.
  • tercih meselesi tabi şu kodu incele, tüm browserlarda sorunsuz çalışır:

    Eyceks Scripti:

    function AJAX() { 
    var ajax = false;

    // Internet Explorer (5.0+)
    try {
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {

    try {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
    ajax = false;
    }

    }

    // Mozilla veya Safari
    if ( !ajax && typeof XMLHttpRequest != 'undefined' ) {

    try{
    ajax = new XMLHttpRequest();
    }catch(e) {
    ajax = false;
    }

    }

    // Diger (IceBrowser)
    if ( !ajax && window.createRequest ) {

    try{
    ajax = window.createRequest();
    }catch(e) {
    ajax = false;
    }

    }

    return ajax;
    }


    // POST işlemleri
    function JXP(yukleniyor, yer, dosya, sc) {
    ajax = new AJAX();

    if ( ajax ) {
    ajax.onreadystatechange = function () {}
    ajax.abort()
    }

    ajax.onreadystatechange = function () { Loading(yukleniyor, yer) }

    ajax.open('POST', dosya, true)
    ajax.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
    ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
    ajax.setRequestHeader("Content-length", sc.length)
    ajax.setRequestHeader("Connection", "close")
    ajax.send(sc)
    }


    // GET işlemleri
    function JXG(yukleniyor, yer, dosya, sc) {
    ajax = new AJAX();

    if ( ajax ) {
    ajax.onreadystatechange = function () {};
    ajax.abort();
    }

    // son hazırlık
    if(sc) {
    dosya = dosya +'?'+ sc;
    }

    ajax.onreadystatechange = function () { Loading(yukleniyor, yer); }

    ajax.open('GET', dosya, true);
    ajax.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    ajax.setRequestHeader("Connection", "close");
    ajax.send(null);
    }


    // Yükleme işlemleri
    function Loading(yukleniyor, yer) {
    if( yukleniyor == 1 && yer != 'no_id' ) {
    if( ajax.readyState == 1 || ajax.readyState == 2 || ajax.readyState == 3 ) {
    var loading = 'Bekleyiniz..'
    document.getElementById(yer).innerHTML = loading;
    }
    }

    if( ajax.readyState == 4 && yer != 'no_id' ) {
    if (ajax.status == 200) {
    document.getElementById(yer).innerHTML = ajax.responseText;
    } else {
    document.getElementById(yer).innerHTML = '<strong>Lütfen Tekrar Deneyin:</strong> ' + ajax.statusText;
    }
    function AJAX() {};
    }
    }


    // Özel karakterleri zararsız hale dönüştür
    // ( Fix Character )
    function fc_(text) {
    var temp;

    temp = encodeURIComponent(text);

    return temp;
    }




  • quote:

    Orijinalden alıntı: sehlor

    tercih meselesi tabi şu kodu incele, tüm browserlarda sorunsuz çalışır:

    Eyceks Scripti:

    function AJAX() { 
    var ajax = false;

    // Internet Explorer (5.0+)
    try {
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {

    try {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
    ajax = false;
    }

    }

    // Mozilla veya Safari
    if ( !ajax && typeof XMLHttpRequest != 'undefined' ) {

    try{
    ajax = new XMLHttpRequest();
    }catch(e) {
    ajax = false;
    }

    }

    // Diger (IceBrowser)
    if ( !ajax && window.createRequest ) {

    try{
    ajax = window.createRequest();
    }catch(e) {
    ajax = false;
    }

    }

    return ajax;
    }


    // POST işlemleri
    function JXP(yukleniyor, yer, dosya, sc) {
    ajax = new AJAX();

    if ( ajax ) {
    ajax.onreadystatechange = function () {}
    ajax.abort()
    }

    ajax.onreadystatechange = function () { Loading(yukleniyor, yer) }

    ajax.open('POST', dosya, true)
    ajax.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
    ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
    ajax.setRequestHeader("Content-length", sc.length)
    ajax.setRequestHeader("Connection", "close")
    ajax.send(sc)
    }


    // GET işlemleri
    function JXG(yukleniyor, yer, dosya, sc) {
    ajax = new AJAX();

    if ( ajax ) {
    ajax.onreadystatechange = function () {};
    ajax.abort();
    }

    // son hazırlık
    if(sc) {
    dosya = dosya +'?'+ sc;
    }

    ajax.onreadystatechange = function () { Loading(yukleniyor, yer); }

    ajax.open('GET', dosya, true);
    ajax.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    ajax.setRequestHeader("Connection", "close");
    ajax.send(null);
    }


    // Yükleme işlemleri
    function Loading(yukleniyor, yer) {
    if( yukleniyor == 1 && yer != 'no_id' ) {
    if( ajax.readyState == 1 || ajax.readyState == 2 || ajax.readyState == 3 ) {
    var loading = 'Bekleyiniz..'
    document.getElementById(yer).innerHTML = loading;
    }
    }

    if( ajax.readyState == 4 && yer != 'no_id' ) {
    if (ajax.status == 200) {
    document.getElementById(yer).innerHTML = ajax.responseText;
    } else {
    document.getElementById(yer).innerHTML = '<strong>Lütfen Tekrar Deneyin:</strong> ' + ajax.statusText;
    }
    function AJAX() {};
    }
    }


    // Özel karakterleri zararsız hale dönüştür
    // ( Fix Character )
    function fc_(text) {
    var temp;

    temp = encodeURIComponent(text);

    return temp;
    }



    hocam şimdi ben bunu şöyle yapsam olur mu? benim kendi yazdığım şöyle bir fonksiyon var mesela:

    function pozitif_oyla(id)
    {

    var div = "div_oy_"+id

    var url = "oyla.php?pozitif="+id;

    ajaxRequest.open("GET", url, true);
    ajaxRequest.send(null);

    ajaxRequest.onreadystatechange = function() {//Call a function when the state changes.
    if(ajaxRequest.readyState == 4 && ajax.status == 200) {
    document.getElementById(div).innerHTML = ajaxRequest.responsetext

    }
    }
    }

    Şimdi ben bunu çağıran düğmeye basınca, benim yazdığım koda göre bu ajaxRequest adlı xmlhttprequest'i çağırarak işlemleri yapıyor değil mi? Sizin yazdığınız kodda, her çağrılan fonksiyon bir kez de AJAX(); fonksiyonunu çağırarak, ajax adlı bu nesneyi oluşturup onu kullanıyor değil mi yanlış anlamadıysam. Şunu da denedim, sizin verdiğiniz function AJAX() kısmını aldım, sonra ben de yazdığım fonksiyona onu çağıracak bir satır yazdım. Haliyle benim fonksiyonda ajaxRequest olan kısımları ajax ile değiştirdim. Budur değil mi yapılacak olan. Yok gene olmuyo. Bütün tarayıcılarda çalışıyor. IE'de olmuyor. Neyse yarın bütün kodları baştan gözden geçirerek tekrar deniyecem, verdiğiniz kodları da biraz daha inceleyecem bakalım.




  • quote:

    var url = "oyla.php?pozitif="+id+"&rand="+Math.random()*1000000;


    Tamamdır evet, dediğiniz gibi hocam random sayı ekleyerek çağırınca işlem tamam oldu. Ama ben bu olayın AJAX katmanında değil de genel olarak olduğuunu düşünüyorum. Mesela tarayıcıya şunu yazdım:

    http://localhost/vit/oyla.php?pozitif=114

    İlk seferde sorunsuz çalıştı, ama ikinici seferde ancak şöyle çalıştı:

    http://localhost/vit/oyla.php?pozitif=114&rand=21658 üçüncüde daha farklı bir rand sayısı yani her defasında farklı rand sayısı. tabi verdiğiniz kodda javascript bu sayıyı otomatik üretiyor. ama neticede araya javascript koymadan adres çubuğundan yazınca da IE aynı sayfayı çağırınca güncelleme problemi yaşatıyor. Bir de sehlor hocanın verdiği kodun function AJAX() kısmını alıp en üste yazdım ve kendi yazdığım her fonksiyonun başına da ajax = new AJAX(); yazınca tam oldu. Tabi bir de benim fonksiyon da ajaxRequest yazan yerleri ajax yaptım.

    Yardımlarınız için teşekkür ederim.



    < Bu mesaj bu kişi tarafından değiştirildi Rock_solid++ -- 7 Mayıs 2010; 11:55:11 >




  • merhabalar benim bi problemim var ama tam olarak ajaxtan fazla anlamıyorum
    sorunum internet explorer olanlarda çalışmıyor
    ama diğer browserlarda çalışıyor Ne ettiysem Birtürlü başaramadım internet explorer da çalıştırmayı yardımlarını bekliyorum kolay gelsin

    var veri=null; 
    {
    try
    {
    veri=new XMLHttpRequest();
    }
    catch(e)
    {
    try
    {
    veri=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e)
    {
    try
    {
    veri=new createRequest();
    }
    catch(e)
    {
    veri=null;
    }
    }
    }
    }
    if (veri==null)
    {
    alert("Tarayiciniz bu sayfada kullanilan bazi özellikleri desteklemiyor.");
    }
    else
    function sorgula(sayfa,yer)
    {
    veri.onreadystatechange=function(){durum(yer)};
    veri.open("GET",sayfa,true);
    veri.send(null);
    }
    function durum(yer)
    {
    if (veri.readyState==4)
    {
    if (veri.status==200)
    {
    document.getElementById(yer).innerHTML = veri.responseText;
    }
    else
    {
    document.getElementById(yer).innerHTML = "<font face='Verdana' size='2' color='#FF0000'>Yükleme basarisiz !!!</font>";
    }
    }
    else
    {
    document.getElementById(yer).innerHTML = "<img src='http://www.ivm-alanya.com/images/loading3.gif' />";
    }
    }


    Sitemin Adresi ie lerde çalışmıyor :( Diğer Bowserlarda çalışıyor Lütfen Yardım edin Fazla Anlamıyorum Ajaxtan nedir bu browser sorunu

    http://www.ivm-alanya.com



    < Bu mesaj bu kişi tarafından değiştirildi geleylen -- 11 Mart 2013; 13:09:45 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.