jQuery AJAX çapraz etki alanı
Burada iki sayfa var, test.php ve testserver.php.
test.php
<script src="scripts/jq.js" type="text/javascript"></script>
<script>
$(function() {
$.ajax({url:"testserver.php",
success:function() {
alert("Success");
},
error:function() {
alert("Error");
},
dataType:"json",
type:"get"
}
)})
</script>
testserver.php
<?php
$arr = array("element1",
"element2",
array("element31","element32"));
$arr['name'] = "response";
echo json_encode($arr);
?>
Şimdi benim sorunum: bu dosyaların her ikisi de aynı sunucuda (localhost veya web sunucusu) olduğunda, çalışıyor ve alert("Success")
çağrılıyor; Farklı sunucularda ise, yani web sunucusunda testserver.php ve localhost'ta test.php, çalışmıyor ve alert("Error")
çalıştırılıyor. Ajax içindeki URL http://domain.com/path/to/file/testserver.php olarak değiştirilse bile
467
3
JSONP][1] kullanın.
jQuery:
Aynı Menşe Politikası]1'e bir göz atmanız gerekir:
Veri elde edebilmeniz için, olması gerekir:
Aynı protokol ve ana bilgisayar
Bunu aşmak için JSONP'yi uygulamanız gerekir.
Tarayıcı güvenliği, bir etki alanında barındırılan bir sayfadan farklı bir etki alanında barındırılan bir sayfaya ajax çağrısı yapılmasını engeller; buna "same-origin policy" denir.