AJAX değişiklik sayfa içeriği

4 Cevap php

Ben başarılı bir web sayfasının içeriğini değiştirmek için AJAX kullandık. Benim etki alanından başka bir web sayfasını içerebilir ama ben sorun köprüler çalışmaya yapıyor. Köprüler göreceli ben bunu dahil ediyorum sayfaya göre çalışmaz o zaman adresleme kullanıyorsanız, bu yüzden ben de okumak gibi php html etiketi ayrıştırmak için araştırıyordu

Ben href veriyi bulmak için aşağıdaki RegExp /href[\s]?=[\s\"\']+(.*?)[\"\']/im kullanıyorum ama göreli adres öneki nasıl bir işaretçi istiyorum.

I would like to replace a link href="./test1/page1.html"
on page http: // foo.bar.com/folder1/info1/data.html with href="http: // foo.bar.com/folder1/info1/./test1/page1.html"
then if I include the the page content of /folder1/info1/data.html in http://foo.bar.com/folder2/faraway/another.html the links on the embedded page will function correctly I was looking at using the php preg_replace function to do that but have very quickly come unstuck. If I am barking up the wrong tree and there is a more appropriate tool or approach can someone please point me in the right direction ;-). Maybe it can all be down in Javascript?

4 Cevap

Eğer sayfada çok fazla javascript yapmak için planlıyorsanız, size JQuery kullanabilirsiniz.

function make_absolute(base_path){
    $("#embedded a").each(function(){
        this.attr("href",
                  base_path + this.attr("href")
                  );
    });
}

Gömülü sayfanın kimliği ile "# gömülü" değiştirin.

Eğer başka bir şey için javascript kullanmak için gidiyoruz değil bu, neredeyse kesinlikle overkill, ama parlak bir dinamik ajaxy sayfası yapmak için planlıyorsanız, bunu içine bakmak olabilir.

Bonus: Doing ajax page loading with JQuery:

$("#embedded").load(page_you_want_to_load)

Bir adım daha ileri ABentSpoon yanıtını alarak, jQuery seçici bir çizgi ile başlayan tüm çapa etiketleri arayabilirsiniz.

$('#embedded a[@href^=/]').each(function() {
    $(this).attr('href', baseUrl + $(this).attr('href'));
});

JQuery seçicileri ile daha fazla yardım için, go here.

Neden sadece mutlak yolları kullanmak değil mi?

Siz kesinlikle buraya çok teşekkürler bana yardımcı oldu. Ben ABentSpoon "bir çizgi ile başlar, bu çoğu amaç için yeterli mutlak bulunuyor" işaret olarak ihtiyacım düzenli ifade /href[\s]?=[\s\"\']\./is olacağını düşünüyorum. Ancak ben diğer sitelerden okuma sayfaları etkinleştirmek için iyi bir excersise olurdu sanırım. Neyse ki bunu yapmak isteyebilirsiniz sayfaların herhangi bir aynı sitede ve aynı sunucu üzerinde bulunmaktadır.

Sadece mutlak yolları kullanarak Jeroen yorumum almak için, bu sitede birçok sayfa olarak orada gerçekten bir seçenek değildir. Ayrıca her sayfa o ... dahili veya harici erişilebilir olacak yere bağlı olarak farklı (DNS) ele almak istiyorum. Eğer bağlantılar mutlak bir yol verirseniz o sitenin DNS adı olan bunların TÜM kravat. Eğer bu bütün çok düzenli olarak değişen, ya da bu konuda depatments bulmak bir sorun thir dizin adlarını değiştirmek için ihtiyacı hissediyorum, ama bu başka bir hikaye. Ben biraz daha esnek olmak için bu özelliği tasarımı istiyoruz.

Ben kesinlikle jQuery hakkında okumak olacaktır. Interesing görünüyor, ben henüz ... more öğrenme ;-) geliyor ile oynadım bir şey değil

Tekrar teşekkürler zaman ayırdığınız için çocuklar.