1

残りのサービスから簡単なテキストを送信し、ajax 呼び出しを使用して読み取ろうとしています。jsonp とクロスブラウザの互換性に関する多くの回答が見つかり、クロスドメインも試しました。

残りのサービスは次のとおりです。単純な文字列のみを送信するようにすべてを切り詰めました。

@GET
@Path("/getcontents2")
@Produces({MediaType.TEXT_PLAIN})
public String getContents2(@QueryParam("name") String msg) {
  return "abc";
}

ajax 呼び出し:

$(document).ready(function() {
  $.ajax({
    type: 'GET',
    url: 'http://metrics/getcontents2?name=Work/loc.txt',
    crossDomain: true,
    async: false,
    dataType:'html',
    success: function (data) {
      console.log(data);
    },
    error: function (xhr, ajaxOptions, thrownError) {
      console.log(xhr.status);
      console.log(thrownError);
      console.log(xhr.responseText);
      console.log(xhr);
    },
  });
});

ブラウザは文字列をそのまま開きます。jquery スクリプトで何かが本当に間違っていると思います。

Firebug のエラー:

GET http://metrics/getcontents2?name=Work/loc.txt 200 OK 4ms    
0 
(an empty string) 
(an empty string) 
Object { readyState=0, status=0, statusText="error"} 
4

2 に答える 2

3

修正しました!

私のサーバーがクロスドメインをサポートしていなかったためです。corsfilter を構成すると、魅力的に機能しました。

于 2013-06-06T00:45:56.027 に答える
0

データ型をテキストjsonpに設定してみてください

dataType: 'jsonp',

http://api.jquery.com/jQuery.ajax/

エラーをさらに解決するには、これに合わせて 2 つのいずれかを実行する必要があります。

  1. サーバー側で変更を加えて、データをテキストではなくjsonとして返す
  2. json でエンコードされた文字列を返すreturn "{"text":"abc"}"; //or something like this

なんで?

jquery クロスドメイン リクエストは、dataTypes "script" および "jsonp" に対してのみ許可されます。

フィドルを更新しましたが、それでもエラーがスローされますが、これは parse json エラーに関連しています

于 2013-06-04T02:02:00.560 に答える