Так что я изучаю jsonp прямо сейчас, и сейчас я не могу заставить этот тестовый запрос работать.Сценарий не работает после первой попытки с jsonp
У меня есть файл, в котором происходит основной сценарий, похожий на этот.
(function(){
var jQuery;
if (window.jQuery==undefined || window.jQuery.fn.jquery!=='1.8.1'){
var script_tag=document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js");
if(script_tag.readyState){
script_tag.onreadystatechange=function(){
if(this.readyState=='complete' || this.readyState=='loaded'){
scriptLoadHandler();
}
};
}else{
script_tag.onload=scriptLoadHandler;
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
}else{
jQuery=window.jQuery;
main();
}
function scriptLoadHandler(){
jQuery=window.jQuery.noConflict(true);
main();
}
function main(){
$(document).ready(function($){
var jsonp_url = "http://www.reflap.com/beta/assets/js/atest.php?callback=theresponse";
$.getJSON(jsonp_url, 'name=Michael', function(data) {
alert (data.fullname);
});
});
}
})();
А на сервере в atest.php у меня есть этот
<?php
function theresponse(){
$fname= $_GET['name'];
if($fname=='Michael'){
echo $_GET['callback']. '(' . "{'fullname':'Michael Yeah'}" . ')';
}
else
echo "Your not allowed here";
}
?>
Однако, когда я иду на jsfiddle.net и выполнить
<script src="http://www.reflap.com/beta/assets/js/widget2.js"></script>
Это не запускается окно предупреждения , Что не так? Я действительно не вижу, где я ошибся.
Мне не нужен jsonpCallback: «theresponse» в вызове ajax? –
Вы можете сделать это, но это не требуется. Обычно jQuery использует собственную внутреннюю функцию обратного вызова. – Barmar
Итак, есть ошибка в моем сервере, потому что я обернул его вокруг функции, называемой theresponse() –