0

昨日一日中これを解決しようとしていましたが、それは私にとって非常に挑戦的であることが証明されました。

このJSを使用して、作成したJavaアプリケーションから情報を取得しようとしています。

$(document).ready(function() {
 $.getJSON('http://localhost/custest?callback=?', function(json) {
   alert('OK');
     $('.result').html(json.description);
  });     
 });

JavaアプリケーションはhttpServerを使用し、非常に基本的です。

ページにアクセスすると' http:// localhost / custest?callback =?' Firefoxの場合、ブラウザはサーバーがjsonデータを送信していることを示し、何で開くかを尋ねますが、上記のJSを使用してWebページから試してみると機能しません。getJSON呼び出しは成功せず、alert( "ok")はまったくポップアップしません。

「 http:// localhost / custest?callback =?」を置き換える場合 JSで「http://twitter.com/users/usejquery.json?callback=?」すべてが正常に動作します。

興味深いのは、Javaサーバーから不正な形式のJSONを送信すると、Firebugがエラーを出し、JSONに何がないかを教えてくれるので、ブラウザーがJSONデータを受信して​​いることを意味しますが、正しいJSON文字列を送信しても何も起こりません。エラーはなく、alert()も開きません。

これらが関連していると思われる場合に備えて、ヘッダーを追加しています。

http://localhost/custest?callback=jsonp1274691110349

GET /custest?callback=jsonp1274691110349 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json

ご協力いただきありがとうございます。

4

2 に答える 2

4

JSONP ではなく JSON を返していますか? 「callback=?」を省略してみてください。部分して、それが役立つかどうかを確認してください。jQuery のドキュメントには、JSON と JSONP に関する追加情報があります。編集: ドキュメントへのリンクも同様に価値があるはずです: http://api.jquery.com/jQuery.getJSON/

于 2010-05-24T09:05:48.963 に答える
3

AJAXリクエストを送信しているページは、Javaアプリケーションと同じサーバーでホストされていますか?そうでない場合は、callback=?Javaアプリケーションでパラメータが考慮されていますか?これがTwitterで機能する理由は、JSONPを送信するためです。つまり、サーバーは次のようにデータを送信する必要があります。

nameofcallback({ name: 'Smith' });

両方が同じドメインcallbackでホストされている場合は、パラメーターは必要ありません。

于 2010-05-24T09:07:06.393 に答える