문제

내가 노력 변환부터 현재 버전의 MS Bing 번역기를 사용하여 새로운 푸른 하나입니다.

내가 만든 액세스 토큰으로서에서 설명하는 새로운 문서하고 있지만 다음 예제(Azure)Microsoft 에서 제공하는 제대로 작동:

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 위해 귀하의 시간입니다.

도움이 되었습니까?

해결책

다른 문제는 빙 AppID 메커니즘에 대한 인증에는 번역기는 사용되지 않습니다.

Microsoft 블로그 포스트스톤 프로세스에 대한 액세스를 번역기에서 Windows Azure Marketplace 여기:

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

예제가 있에 ASP.NET 여기:http://blogs.msdn.com/b/translation/p/gettingstarted2.aspx

추천서(최소한)를 넣고 코드 얻기 위해 귀하의 토큰 서버의 측면에서 ASP.NET,PHP,노드 또는 이와 유사한 그래서 당신은 클라이언트의 ID 및 클라이언트는 비밀을 드러내지 않는다.

일단 당신이 당신의 액세스는 토큰 작성해야에 HTTP 헤더의 전화 보호하기 위하여 노력합니다.이 ASP.NET 샘플 보여주는,그리고 상대적으로 쉽게해야에 적응하 JQuery.

다른 팁

을 사용하여 빙 번역으로 인증 토큰면 먼저 서버 측 스크립트는 다음과 같이 PHP 스크립트 token.php.그것은 것이라는 모든 9 에서 분에서 자바스크립트는 웹 페이지입니다.

<?php
$ClientID="your client id";
$ClientSecret="your client secret";

$ClientSecret = urlencode ($ClientSecret);
$ClientID = urlencode($ClientID);

// Get a 10-minute access token for Microsoft Translator API.
$url = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
$postParams = "grant_type=client_credentials&client_id=$ClientID&client_secret=$ClientSecret&scope=http://api.microsofttranslator.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
$rsp = curl_exec($ch); 

print $rsp;
?>

다음 html 페이지가 표시됩니다 두 가지 상자 인터페이스에서 변환하는 영어 프랑스어입니다.

참고:이전 버전의 이 포스트 없었다 최고 5 개의 라인과 그렇지 못했을 로드하 jQuery.(미안@db1.) 작업 스크립트가 여기에 온라인:

http://www.johndimm.com/bingtrans/

<html>

<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

  <script language="javascript">
    var g_token = '';

    function onLoad() {
      // Get an access token now.  Good for 10 minutes.
      getToken();
      // Get a new one every 9 minutes.
      setInterval(getToken, 9 * 60 * 1000);
    }

    function getToken() {
      var requestStr = "/bingtrans/token.php";

      $.ajax({
        url: requestStr,
        type: "GET",
        cache: true,
        dataType: 'json',
        success: function (data) {
          g_token = data.access_token;
        }
      });
    }

    function translate(text, from, to) {
      var p = new Object;
      p.text = text;
      p.from = from;
      p.to = to;
      p.oncomplete = 'ajaxTranslateCallback'; // <-- a major puzzle solved.  Who would have guessed you register the jsonp callback as oncomplete?
      p.appId = "Bearer " + g_token; // <-- another major puzzle.  Instead of using the header, we stuff the token into the deprecated appId.
      var requestStr = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate";

      window.ajaxTranslateCallback = function (response) {
        // Display translated text in the right textarea.
        $("#target").text(response);
      }

      $.ajax({
        url: requestStr,
        type: "GET",
        data: p,
        dataType: 'jsonp',
        cache: true
      });
    }


    function translateSourceTarget() {
      // Translate the text typed by the user into the left textarea.
      var src = $("#source").val();
      translate(src, "en", "fr");
    }
  </script>
  <style>
    #source,
    #target {
      float: left;
      width: 400px;
      height: 50px;
      padding: 10px;
      margin: 10px;
      border: 1px solid black;
    }
    #translateButton {
      float: left;
      margin: 10px;
      height: 50px;
    }
  </style>
</head>

<body onload="onLoad();">

  <textarea id="source">Text typed here will be translated.</textarea>
  <button id="translateButton" onclick="translateSourceTarget();">Translate English to French</button>
  <textarea id="target"></textarea>

</body>

</html>

수도 추가 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!'); 
  }

도 스크립트에 의해 제출된 존 Dimm 및 작동하지 않았습니다.반 빈 상태 304 수정되지 않습니다.대신 사용 PHP 으로 마이크로소프트 번역 코드에서 msdn 블로그에서 이 링크 http://blogs.msdn.com/b/translation/p/phptranslator.aspx 고 그것을 아름답게 일

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top