1

現在のバージョンの MS Bing Translator から新しい Azure バージョンに変換しようとしています。

新しいドキュメントの説明に従ってアクセス トークンを作成しましたが、Microsoft が提供する次の例 (Azure 用) は正しく動作します。

function translate() {

  var from = "en", to = "es", text = "hello world";
  var s = document.createElement("script");
  s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate" +
            "?appId=" + settings.appID +
            "&from=" + encodeURIComponent(from) +
            "&to=" + encodeURIComponent(to) +
            "&text=" + encodeURIComponent(text) +
            "&oncomplete=mycallback";
  document.body.appendChild(s);
}

function mycallback(response) {
  alert(response); 
}

上記のコードを jQuery 呼び出しに変換したいと思います。

以前のバージョンからの同様の jQuery ajax 呼び出しを変更しましたが、問題parseerror-jQuery17206897480448242277_1343343577741 was not calledが発生しました。

  function jqueryTranslate() {
    var p = {};
    p.appid = settings.appID;
    p.to = "es";
    p.from = "en";
    p.text = "Goodbye Cruel World";
    p.contentType = 'text/html';
    $.ajax({
      url: 'http://api.microsofttranslator.com/V2/Ajax.svc/Translate',
      data: p,
      dataType: 'jsonp',
      jsonp: 'oncomplete',
      complete: function (request, status) {
      },
      success: function (result, status) {
        alert(result);
      },
      error: function (a, b, c) {
        alert(b + '-' + c);
      }
    });
  }

何がうまくいかないのかを理解していただければ幸いです。TIA にお時間をいただきます。

4

4 に答える 4

1

もう1つの問題は、トランスレータに対して認証するためのBingAppIDメカニズムが非推奨になったことです。

Microsoftには、WindowsAzureマーケットプレイスでTranslatorにアクセスするためのプロセスを詳しく説明したブログ投稿があります。

http://blogs.msdn.com/b/translation/p/gettingstarted1.aspx

ここにASP.NETの例があります:http: //blogs.msdn.com/b/translation/p/gettingstarted2.aspx

推奨事項は、(少なくとも)トークンサーバー側をASP.NET、PHP、Nodeなどに配置して、クライアントIDとクライアントシークレットが公開されないようにすることです。

アクセストークンを取得したら、サービスへの呼び出しのHTTPヘッダーに書き込む必要があります。ASP.NETサンプルはそれを示しており、JQueryへの適応は比較的簡単です。

于 2012-07-27T14:50:18.083 に答える
0

呼び出しにjsonpCallbackを追加して、新しい関数を定義してみてください。これは、あなたの jQuery コードを Microsoft の例と比較すると、欠けているように思われるものです。

  function jqueryTranslate() {
    var p = {};
    p.appid = settings.appID;
    p.to = "es";
    p.from = "en";
    p.text = "Goodbye Cruel World";
    p.contentType = 'text/html';
    $.ajax({
      url: 'http://api.microsofttranslator.com/V2/Ajax.svc/Translate',
      data: p,
      dataType: 'jsonp',
      jsonp: 'oncomplete',
      jsonpCallback: 'onCompleteCallback',   <------------------ THIS LINE
      complete: function (request, status) {
      },
      success: function (result, status) {
        alert(result);
      },
      error: function (a, b, c) {
        alert(b + '-' + c);
      }
    });
  }

  function onCompleteCallback(response) {    <------------------- THIS FUNCTION
    alert('callback!'); 
  }
于 2012-07-27T07:05:42.453 に答える
0

John Dimm によって提出されたスクリプトを試してみましたが、うまくいきませんでした。空白のボックスとステータス 304 Not Modified を返します。代わりに、このリンクhttp://blogs.msdn.com/b/translation/p/phptranslator.aspxの msdn ブログで Microsoft トランスレータ コードで PHP を使用しました。

于 2013-12-23T19:54:51.377 に答える