2011-03-09 12 views
1

現在、WebサービスのWebフロントエンドを開発中です。私はデバッグの目的のためにJS-FrameworkとFirebugとしてjQuery 1.5.1を使用しています。Webサービスからの有効な応答を取得できません

まず、Firefox拡張機能「RESTクライアント」を使ってWebサービスをテストしました。 があり、次のリクエストが成功した:

{"requestUrl":"http://localhost:8080/Foobar/rest/goods?label=Schro","requestMethod":"GET","requestBody":"","headers":["accept","application/json"]} 

、私はjQueryのUIのオートコンプリート()メソッドのコンテキストでこの要求を再現したい:

$("#autocompleteTest").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://localhost:8080/Foobar/rest/goods/", 
      dataType: "json", 
      data: { 
       label: $("#autocompleteTest").val() 
      }, 
      headers: {'accept':'application/json'}, 
      error: function(jqXHR, textStatus, errorThrown) { 
       log(textStatus + "," + errorThrown); 
       log(jqXHR); 
      }, 
      success: function(data) { 
       console.log("bla:" + data); 
       response($.map(data, function(item) { 
        return { 
         label: item.label + " # " + item.id, 
         value: item.id 
        } 
       })); 
      }    
     }); 
    }, 
     // [...] 

私はjQueryのからこのレシピを取りましたUIオートコンプリートdemo

ただし、これによりエラーイベントが発生します。 Firebugのは言う:

[Object { readyState=0, status=0, statusText="error"}] 
とレスポンスヘッダは空です:

GET http://localhost:8080/Foobar/rest/goods/?label=Schrott - 200 OK 16ms 
Antwort-Header 
Server Foobar-Optimizer 
Content-Type application/json;charset=UTF-8 
Transfer-Encoding chunked 
Date Wed, 09 Mar 2011 10:50:03 GMT 
Anfrage-Header 
Host localhost:8080 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b12) Gecko/20100101 Firefox/4.0b12 
Accept application/json 
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding gzip, deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
Origin null 

エラーjqXHR氏は述べています。

両方のリクエストは、異なる結果とは別に私の目では同じように見えます。 私は何か提案がありがとうと思います。ありがとうございました。

更新:ソリューション

これは、クロスドメインポリシーの問題です。私はこの行動を知らなかった。解決策は、$ .ajaxデータ型を "json"から "jsonp"に変更することです。これは、これらのポリシーを上書きし、リモートWebサービスにアクセスするための洗練された方法です。

もちろん、Webサービスはこのjsonの「パディング」を処理できる必要があります。他の可能性の束がここで言及されて

http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

+0

あなたは「財」から末尾のバックスラッシュを削除しようとしましたか? –

+0

ええ、結果は同じです: "エラー"、そしてそれ以上の情報は与えられません。 Webサービス自体からのコンソールログは、かなり上手く見えます。私は正確な実装を認識していませんが、要求されたオブジェクトを送信したかのように見えます – Weizen

答えて

関連する問題