2012-02-16 8 views
1

コンソールでFirebugでこのコードを実行すると、無効なラベルが表示され、成功コールバックが発生しません。私の答えをgoogleに手を振った後、私はjsonpを使うときに結果を解析してコールバックをする必要があることを知りました。今私は可能な答えを探して壁に向かって頭を叩いている。これで私を助けてくれますか?感謝します。 ?安心なWebサービスからjsonを取得しようとしたときに無効なラベル

$.ajax({ 
     url: 'http://localhost:8732/Service1/data/10', 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 
     processdata:true, 
     jsonpCallback: 'mycallback', 
     success : function(data) { 

      var json = $.parseJSON(data); 
      $('#items').html(json); 
      alert(json); 

     }, 
     error : function(req, status, ex) { 

      alert("Lol" + ex); 

     } 
     }); 
     } 

またalert("Lol"+ex)は、それが中に固執LoljQuery16403233689395911671_1329386795307

+0

アラート( "lol" + ex)は、 "LoljQuery16403233689395911671_1329386795307が呼び出されていない"というメッセージを表示します。 – jongbanaag

答えて

1

jsonpString

jsonpリクエストでコールバック関数名をオーバーライドします。この値 は 'callback ='の 'callback'の代わりに使用されます。 URLの クエリ文字列の一部だから{jsonp: 'onJSONPLoad'}の結果は 'onJSONPLoad =?'サーバーに渡されます。 jQuery 1.5の時点で、 jsonpオプションをfalseに設定すると、jQueryは "?callback" 文字列をURLに追加したり、 "=?"変換のために。 この場合、jsonpCallback設定も明示的に設定する必要があります。 例えば、{JSONP:偽、jsonpCallback: "callbackName"}

jsonpCallbackString、機能

はJSONPリクエストに対するコールバック関数の名前を指定します。 jQueryによって自動的に生成されるランダムな名前の代わりに、この値 が使用されます。 は、リクエストの管理やコールバックの提供やエラー の処理を容易にするため、jQueryに固有の名前を生成させることが望ましいです。 のGETリクエストのブラウザキャッシュを有効にする場合は、コールバックを指定することができます。 jQueryの1.5の時点で、あなたはまた、 は jsonpCallbackの値はその関数の戻り値に設定されている場合には、この設定のための機能を使用することができます

コードサンプル:

<!DOCTYPE html> 
<html> 
<head> 
    <style>img{ height: 100px; float: left; }</style> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <div id="images"> 

</div> 
<script> 
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", 
    { 
    tags: "cat", 
    tagmode: "any", 
    format: "json" 
    }, 
    function(data) { 
    $.each(data.items, function(i,item){ 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
    });</script> 

</body> 
</html> 

参考文献:http://api.jquery.com/jQuery.getJSON/

編集:コード2

$.ajax({ 
    url: 'http://server:port/path/to/file', 
    type: 'GET', 
    dataType: 'jsonp', 
    cache: false, 
    jsonp: '$callback', 
    error: function (x, t, r) { alert(x.response.message); }, 
    success: function (data) { 
     $.each(data.d.results, function (i, val) { 
      $("#results").append("<div>" + val.name + "</div>"); 
     }); 
    } 
}); 
+0

でjsonが有効です。私はjsonpを置く必要があります:false、jsonpCallback: "成功"、私のコードに?私はそれをしたが、成功は呼び出されず、私はまだ無効なラベルエラーがあるので。 – jongbanaag

0

http://localhost:8732/Service1/data/10で有効なJSONです「と呼ばれていなかったプロンプトが表示されます:http://jsonlint.com/また、実行してエラーをキャッチしてみてください:

var request = $.ajax({ 
    ... 
}); 

request.error(function(error) { 
    console.log(error); 
}); 
+0

あなたのコードを追加しました。これは火かき棒の結果です。オブジェクト{readyState = 4、status = 200、statusText = "success"} – jongbanaag

+0

とはいhttp:// localhost:8732/Service1/data/10? jsonlint.com – jongbanaag

関連する問題