0

そのため、現在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>

アラートボックスは起動しません。どうしたの?どこを間違えたのかよくわかりません。

4

1 に答える 1

0

$.getJSONJSONP ではなく、通常の JSON 用です。試す:

var jsonp_url = "http://www.reflap.com/beta/assets/js/atest.php';
$.ajax({
    url: jsonp_url,
    dataType: 'jsonp',
    data: { name: 'Michael' }
}).done(function(data) {
    alert(data.fullname);
});

callback=?URL にを入れる必要はありません。jQuery が自動的に行います。

于 2013-07-05T06:47:15.087 に答える