Microsoft 푸른 번역 AJAX API 를 작동하지 않는
-
12-12-2019 - |
문제
내가 노력 변환부터 현재 버전의 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 고 그것을 아름답게 일