私は現在、イントラネットアプリケーション内のいくつかのフォームフィールドの直接変換を提供するためにGreaseMonkeyユーザースクリプトを開発中です。jQuery、JSON-P、Google翻訳:さまざまなエラー
var apiurl = 'https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=fr%7Cen&q=';
$.getJSON(apiurl+encodeURIComponent(text)+"&callback=?",function(data){
alert('Translation Complete');
//Change text
});
ここに私の問題です:
- これはクロスドメインリクエストであると私はJSONPを使用するように強制しています、私はこのコードを使用したGoogle翻訳のAPIを呼び出すまで
すべてがOKになり。これを行うために、URLの末尾に
&callback=?
という文字列を追加しました。getJSON
コールバックは発生しません(ただし、応答データが正確である)、と私はFirebugのコンソールでこのエラーを取得:
jsonp1298988446807が定義されていないが
私が使用している場合
&callback=foo
代わりに、私の要求はもはやPOSTではなく、完了しませんが(ネットワークパネルで)表示されます(ネットワークパネル内)OPTIONS request_url 405 Method Not Allowed
私はコールバックとして指定するカスタム関数を作成する場合、それは(それが唯一それが動作するかどうかをチェックするために、アラートが含まれています)関数が呼び出されていないのいずれかとして動作しません。
誰もが、これは動作しませんなぜわずかなアイデアを持っている場合、私は(多分それは^^役立つだろう)、壁に頭を強打するこの近くだから、私を助けてください。
ありがとうございました。
EDIT:Scooblerのおかげで、私は少しさらに行ってきたと信じていました。
:彼のコードを使用して、私はより多く/ignore
^^私のスクリプトからの要求は、Firebugののネットワーク]タブに表示されない、と警告によって与えられた応答がある何かを得ることができました
応答テキスト:
ステータスが返さ未定義:エラー
エラースロー:エラースロー:[例外... nsresult "コンポーネントが利用できない": "0x80040111(NS_ERROR_NOT_AVAILABLE)" 場所:「JSフレーム::ファイル:/// C:/ Documents%20and%20Settings/username/Applicatio n%20Data/Mozilla/Firefox/Profiles/jmbr7ut9.default/extensions /%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey。JS ::匿名::ライン396" のデータ:平均時間はありません]
、私は自分自身で研究を続け、完全なウォークスルーhereで、クロスドメインリクエストのためのGreaseMonkeyのjQuery /橋を渡って来ました(this postから)が、これは、私はjQueryのは、何のようなユニークなコールバックの名前を与える代わりに、短いコードで.getJSON()
var apiurl = 'https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=fr%7Cen&q=';
$.ajax({
url: apiurl+encodeURIComponent(text),
dataType: 'jsonp',
success: function(data) {
alert('Translation Complete');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Response text: "+XMLHttpRequest.responseText);
alert("Status returned: "+textStatus);
alert("Error thrown: "+errorThrown);
}
});
$.ajaxStart(function() {
alert("Ajax Started");
});
$.ajaxStop(function() {
alert("Ajax Finished");
});
を完全修飾.ajax()
コールを使用してみますScooblerのスクリプト
あなたの考えは正しいと思いますが、リクエストは開始されません。私のコードでエラーを確認します – 3rgo
@ Squ36上記のコードをコピー&ペーストした場合、成功のコールバックの最後に '}'がありませんでした。残念です!私はまた、動作していない場合、いくつかの光を放つのを助けるかもしれないエラーコールバックを含んでいます。 '.ajax()'と '.ajaxStop()'の2つのエキストラ '.ajaxStart()'は、 '.ajax()'関数の起動と停止を警告します。 – Scoobler
私はあなたのコードを試しました、それは動作するはずですが、私はOPをエラーを表示するように更新します。 – 3rgo