2010-05-25 26 views
5

Tamam, durum şu: İhtiyaçlarımızın% 99'u için mükemmel çalışan harici bir CMS sahibim. Ancak daha gelişmiş şeylerde kendi CSS + JS'imi enjekte ettim ve sihir yapıyorum. Çalıştığım sorun, jQuery.ajax() çağrılarından basit bir HTML sayfası yükleniyor. Hiçbir uyarı ya da hatanın atılmaması anlamında çalışmaktadır; Ancak benim başarı işleyicimde (IS koştu), yanıt boş!jQuery İki etki alanlı AJAX

Sabah anlamaya çalışarak kafamı tırmalamaya çalışıyorum ve düşünebildiğim tek şey, çapraz etki alanıyla ilgili bir şeylerin olması (iş görünse bile).

Enjekte JavaScript:

$(document).ready(function() { 
    doui(); 
}); 
function doui() { 
    $.ajax({ 
     url: 'http://apps.mydomain.com/css/feecalc/ui.htm', 
     cache: false, 
     success: ajax_createUI, 
     charset: "utf-8", 
     error: function(e) { 
      alert(e); 
     } 
    }); 
} 
function ajax_createUI(data, textStatus) { 
    alert(data); 
    $("#ajax-content").html(data); 
} 

Benim ajax_createUI() başarı işleyicisi olarak adlandırılan ve textStatus "başarı" dır edilir; ancak veriler boş.

Bu http://www.mydomain.com/

Sadece aptal olmak muyum @ (JS içine enjekte alır) CMS web sitesi bulunduğu ancak dosya http://apps.mydomain.com/css/js/feecalc.js @ bulunduğu veya buna çalışıyor ama takmamıştı gerektiğini gibi görünüyor bir hata olduğunu JS 't?

cevap

5

Bu bir hata değil, modern tarayıcıların bir özelliği: Same Origin Policy Bunun üstesinden gelmek için üç yol var. Zaten sorunu saldırdınız şekilde baktığımızda, ben bir sayfanın yüklenmesi için en uygun olanı yöntem .load()

İkinci Nick söylediği gibi, alanlar arası sorunları yaşıyorsanız olduğunu düşünüyorum jsonp

+0

Bir hata atma sebebi var mı? Kökenin sayfanın değil, betiğin olduğunu varsayıyorum (ve bağlantınızı okuyorum)? –

+0

Bu hak: www.natronacounty-wy.gov dosyası, içine enjekte ettiğiniz betiği alır, daha sonra bu betik www.natronacounty-wv.gov sayfasından http: //apps.natronacount-wy ... çağırır? – Nick

+0

Doğru. CMS www sistemi, benim uygulama sunucumdan JS yüklemek için

1

içine bakmak istiyorum . Bir seçenek, sitenizde ihtiyacınız olan sayfayı istemek üzere proxy işlevi gören bir sayfaya karşı load() işlemi yürütür. Örneğin

: Sen .Load (/myPage.aspx) ve myPage.aspx isteği http://apps.natronacounty-wy.gov/css/feecalc/ui.htm talep ve müşteriye iade

+1

Bunu, www, sunucum değil, satıcı CMS sistemi olarak yapıyorum. uygulamalar benim tüm JS'mn depolandığı sunucumdur. –

+0

@Andrew Yanlış anladığınızı düşünüyorum, sunucunuzda javascript çağrıları olan proxy'yi yazarsınız. Bu şekilde javascript'inizi uzaktaki içeriği yükleyen yerel bir sayfa/sunucuya vurmak için yazdınız –

+0

@ Flash84x Sunucuya çağrıları proxy edebilecek herhangi bir özel kod yazamam. Erişim sahibi olduğum tek sunucu uygulamalar ve eğer bir HTTP sonucunu okuyabilseydim bir proxy'ye gerek duymayacaktım. –

0

Sen her ne kadar YQL (Yahoo! Query Language) aracılığıyla isteğinizi sorgulamak hangi bir JSONP dosyasıyla sonuçlanacaktır (hatta bir geriçağırım işleviyle XMLP -> XML'i desteklemektedir). Bu, performansınızı düşürebilir, ancak Yahoo hızlı sunucular sağlar.

+0

YQL kullanan jQuery eklentisini denedim ve aynı şeyi yaptım :(http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/ –

+0

Kendi yazmanız gerçekten basit, sadece yaz geri arama işlevi ve sorgu "çıktı olarak XML seçerken url = '+ url +'" html gelen SELECT * ve geri arama olarak geri arama işlevi.Ne aramak istediğiniz ve eklemek istediğinizi seçebilirsiniz. DOM'a. – fb55