Περισσότερα
jQuery AJAX cross domain
Εδώ είναι δύο σελίδες, η test.php και η 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);
?>
Τώρα το πρόβλημά μου: όταν και τα δύο αυτά αρχεία βρίσκονται στον ίδιο διακομιστή (είτε localhost είτε web server), λειτουργεί και καλείται το alert("Success")
Αν είναι σε διαφορετικούς διακομιστές, δηλαδή testserver.php στον web server και test.php στον localhost, δεν λειτουργεί και εκτελείται το alert("Error")
. Ακόμη και αν η διεύθυνση URL μέσα στο ajax αλλάξει σε http://domain.com/path/to/file/testserver.php.
467
3
Χρησιμοποιήστε [JSONP][1].
jQuery:
Πρέπει να ρίξετε μια ματιά στην Πολιτική ίδιας προέλευσης:
Για να είστε σε θέση να λάβετε δεδομένα, πρέπει να είναι:
Το ίδιο πρωτόκολλο και ο ίδιος κεντρικός υπολογιστής
Πρέπει να υλοποιήσετε το JSONP για να το παρακάμψετε.
Η ασφάλεια του προγράμματος περιήγησης αποτρέπει την πραγματοποίηση κλήσης ajax από μια σελίδα που φιλοξενείται σε έναν τομέα σε μια σελίδα που φιλοξενείται σε διαφορετικό τομέα- αυτό ονομάζεται "πολιτική ίδιας προέλευσης".