2012-02-27 25 views
0

Google App Engineでホストされている私のURLサービスがJSONコンテンツタイプを返します。jQuery.ajaxリクエストでJSONレスポンスをAppengine URLに取得する方法は?

例のURLはthisです。これはブラウザで完璧に機能します。 http://jsonlint.comからも有効です。

次のjQuery.ajaxコールを使用して応答を取得しています。

jQuery.ajax({ 
type: "get", 
url: "http://trim-pk.appspot.com/do?url=http://www.google.com", 
dataType: "json", 
success: function(response) { 
    alert(response); 
} 
}); 

何が問題になりましたか?なぜ私は応答を得ていないのですか?それはnullです。

私はcontentType: "application/json; charset=utf-8"contentType: "application/json; charset=ISO-8859-1"てみましたが、続いて500

を持っているが、私のFirebugの出力です。

enter image description here

答えて

1

はあなたのAppEngineアプリ上でCORSを設定してみては?

+0

いいえ、このことは私には新しいものです。私はそれを見なければならない。 –

+0

@TahirAkram 'trim-pk.appspot.com'から読み込まれたページからのみAJAXリクエストを行うことができるようになるまで、ブラウザはセキュリティのためにそれをブロックします。 – robertc

+0

@ robertc私のサーブレットで 'resp.setHeader(" Access-Control-Allow-Origin "、" * ");を追加しました。そして私はJSONの応答を得ました。 (JavaScriptコードの呼び出しに変更はありません)。アプリエンジンアプリでCORSを有効にすることをお勧めします。 –

0

:/は、URL内の文字を予約し、特別な意味を持っています。

Urlパラメータで使用するには、"Url encode"を指定する必要があります。ブラウザは自動的にそれを行います。

Javascriptでは、encodeURIComponent()機能を使用して手作業で行う必要があります。

jQuery.ajax({ 
    type: "get", 
    url: "http://trim-pk.appspot.com/do?url=" + encodeURIComponent("http://www.google.com"), 
    dataType: "json", 
    success: function(response) { 
     alert(response); 
    } 
}); 

更新:encodeURIComponentencodeURIを置き換えこれはトリックを行う必要があります。

+0

まだ応答が返っていません。 –

+0

"http://trim-pk.appspot.com/do?url=" + encodeURIComponent( "http://www.google.com"); 'を実行しませんか? 'url'パラメータは整形式URLである必要があります。 – robertc

+0

@ robertcいくつかの進展がありました。私はあなたが言ったようにデータ型を変更しました: "jsonp"。そして、私は火かき棒でこれを手に入れました:http://i.imgur.com/B3HKK.png –

0

jQuery.ajax({ 
    type: "get", 
    url: "http://trim-pk.appspot.com/do", 
    data: { 
     url: "http://www.google.com" 
    }, 
    dataType: "json", 
    success: function(response) { 
     alert(response); 
    } 
}); 
+0

運がよかったです。これはクロスドメインアヤックスの問題ですか?私はlocalhost上でリモート呼び出しているように。 jsonpを使うべきだと言う人もいます。それのための考えを持っていない。しかし、それは私が立ち往生している単純なことです。 –

+0

ああ、あなたは言わなかった。別のドメインから電話している場合 - jsonp(またはそれよりももっと複雑なもの)が必要です –

+0

trim-pkのオーナーは誰ですか?あなたはjsonp isnteadで応答することができますか? –

関連する問題