2011-03-16 11 views
7

isteniyor veriler gayet güzel çalışıyor. .load() ile başka bir alandan nasıl içerik alırsınız? Benim .Load ile etki alanının() (veya herhangi bir jQuery ajax fonksiyonları) üzerinde herhangi bir yerden

olsa çalışmaz farklı bir etki alanındaki bir URL'ye erişmeye çalışıyorum. Bunu nasıl yapıyorsun? Diğer alan da benim olacak.

PHP ile yapabildiğiniz ve içeriği alan bir proxy oluşturduktan sonra, jQuery'nin ajax işlevlerini, sunucunuzdaki php konumunda kullanırsınız, ancak yine de jQuery ajax'ı kendi sunucunuzda kullanırsınız. sayılmaz.

iyi eklenti var mı?

DÜZENLEME: seni aynı şekilde jQuery işlevinin herhangi birini kullanarak diğer sayfalardan içeriği istemek sağlayan jQuery için çok güzel bir eklenti buldum kendi etki alanında normal ajax isteği olur.

mesaj: http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

eklentisi: https://github.com/jamespadolsey/jQuery-Plugins/tree/master/cross-domain-ajax/

cevap

10

Bunun nedeni sıralamada, bir istemci tarafı komut dosyası kullanarak anlamına gelir, alanlar arası politikasıdır (aka javascript ...) başka bir alandan veri talep edemezsiniz. Şanslı bizim için, bu kısıtlama çoğu sunucu tarafı komut dosyasında mevcut değil. Yani

...

JavaScript: "google-html.php" in

$("#google-html").load("google-html.php"); 

PHP:

echo file_get_contents("http://www.google.com/"); 

çalışacak.

+0

Bu konuda herhangi bir kısıtlama olmadığı sürece ve birçok paylaşılan barındırma hizmeti bunu devre dışı bırakır. Bu sizin için durum buysa, Curl http://curl.haxx.se/ –

+0

Doğru kullanarak bakmak isteyebilirsiniz, daha iyi ödenen hosting hizmetlerinden birini kullanıyordum. – mattsven

+0

Daha iyi ücretli barındırma hizmeti 'allow_url_fopen' işlevini geçersiz kılar. Güvenlik için daha iyi. –

3

Farklı etki = kadarıyla tarayıcınızın söz konusu olduğunda farklı sunucular. Ya isteği yapmak için JSONP kullanın veya proxy için PHP kullanın. Etki alanları arası bir JSONP isteği yapmak için jQuery.ajax()'u kullanabilirsiniz.

3

biri gerçekten kolay çözüm herhangi bir dış siteden içerik alabilirsiniz Yahoo'nun YQL hizmetini kullanmaktır.

Sadece JavaScript ve YQL kullanan bu örnekten sonra bunu birkaç sitede yaptım. Bu örnek, diğer birkaç çözümü de özetleyen bir blog postasının bir parçasıdır. http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

+0

Teşekkürler, yukarıdaki EDIT'imde başvurduğum eklenti aslında şunu kullanır: D – trusktr

1

Ben çalışan başka çözümün biliyoruz. JQuery'yi değiştirmenizi gerektirmez. Alan adınızda bir ASP sayfası oluşturabilmenizi gerektirir. Bu yöntemi kendim kullandım.

1) url? Daha sonra bir JQuery yük fonksiyonu yapabilirsiniz) bu sayfada http://www.itbsllc.com/zip/proxyscripts.html

2 gibi bir proxy.asp sayfası oluşturun ve proxy.asp beslemek = ....... Bu formatın nasıl biçimlendirileceğine dair bir örnek var. Her halükarda, yabancı sayfa URL'sini ve istediğiniz MIME türünü get proxy değişkenleri olarak yerel proxy.asp sayfanıza aktarırsınız. Kullandığım iki MIME türü, text/html ve image/jpg.

Hedef sayfanızın göreceli kaynak bağlantılarına sahip görüntüleri varsa, muhtemelen yüklenmeyecektir. Bu yardımcı olur.

+0

Cevabınız için teşekkürler! – trusktr

İlgili konular