2011-08-11 12 views
5

jQuery'yi kullanarak random.org'dan rastgele bir numara isteyen bir sorun yaşıyorum. Statik bir sayfa ve aşağıdaki javascript kullanıyorum, rasgele sayılar almakta herhangi bir sorunum yok. Ancak, ben (kutanızda Thin kullanarak üretim benim app çalışırken de) Heroku üzerinde bir Sinatra uygulaması ev sahipliği yapıyorum "(web sitesi) Erişim-Kontrol-İzin-Menşe tarafından izin verilmez."jquery ve random.org "Erişim-Denetim-İzin-Menşei ile izin verilmiyor"

function raffler(){ 

var rowCount = $('#winnerTable tr').length; 

$('#winnerButton').click(function() { 
    $.get("http://www.random.org/integers/?", {num: "1", min: "1", max: rowCount, col: "1", base: "10", format: "plain", rnd: "new"}, function(randNum) { 
     var myNumber = randNum; 
     $("#entry-" + randNum).addClass('winner'); 
    }); 
}); 

}; 

Düşünceler?

+0

Ajax istekleri aynı Kaynak Politikası ile sınırlıdır. Sayfanız www.random.org 'alan adında barındırılmadıkça, bu Ajax isteğini yapamazsınız ... –

cevap

1

Dürüst olmak gerekirse bunu nasıl yapabileceğinizi anlamıyorum. Çünkü yapamamalısın. Access-Control-Allow-Origin, çapraz etki alanı isteklerini engelleyen ve çoğu istemci tarafı kodlama motorlarının (ör. Flash) bir parçası olan bir XSS korumasıdır. rasgele sayı üretimi için aşağıdakileri kullanın:

Math.random() 
+0

Ben de emin değilim; Çalışırken neden işe yaradığını anlayamıyorum ve neden olmasın. Mümkün olduğunca rasgele sayı üretimi kullanmak istedim (random.org), ancak Math.random() için yerleşmem gerekecek. =] Yardımlarınız için teşekkürler. – YuKagi

+0

Ancak, masaüstünüzde bir .html dosyası ayarlarsanız ve yukarıda belirttiğim kodla bir .js dosyasına bağlarsanız, çalışır. ;) – YuKagi

+0

Boldewyn'in cevabına bakın, neden yerel olarak çalıştığını açıkladı – SinistraD

0

Bu sayfadan sonuç elde etmek için jQuery YQL eklentisini kullanın.

Gerekli sayfanın içeriğini almak için Yahoo hizmetini kullanarak kaynak onayını atlar.

http://plugins.jquery.com/project/jquery-yql-plugin

Ama çok karmaşık bir yoldur. Neden Math.random() kullanmıyorsunuz?

3

Eh, kisa çeke, random.org herhangi CORS başlıklarını döndürmez. Bu, neden web sitenizden Javascript yoluyla talep etmenize izin verilmediğini açıklar.

Stat dosyanız, çalıştığınız yerde yerel olarak, yani file:/// protokolü üzerinden yüklediniz mi? Görevde başka güvenlik ölçümleri var ve tarayıcılar genellikle etki alanları arası AJAX'a izin veriyor.