1

任何人都可以在这里帮助我吗?如果我的问题或代码不清楚,请告诉我,我会简要解释一下。

我正在尝试使用 Microsoft 翻译器翻译页面,但它不适用于 Ajax 成功中的 HTML 标记:

由于翻译数据的限制,数据翻译工作正常我只是切片元素并转换内部html数据,Ajax成功无法附加转换到页面的数据。

任何人都可以帮助我在 ajax 成功中的代码有什么问题吗?

$(document).ready(function () {
$('#ContentPlaceHolder1_ddlTranslat').change(function (evt) {
 evt.preventDefault();
 var authToken = $('#ContentPlaceHolder1_token').val();
 var from = 'en';
 var to = 'hi';
 var chunkdata = [];
 var data = $("*");
 var len = data.length;
 len = len / 2;
 len = Math.round(len);

  try {
   var startlen = 0;
   var endlen = 2;
   var endadd = 2;
  for (var i = 1; i <= len + 1; i++)
    {   
      chunkdata.push(data.slice(startlen, endlen));
      startlen = endlen + 1;
      endlen = endlen + endadd;
    }
   }
   catch (e) {
       throw e;
     }

     var divsplit = [];
       $.each(chunkdata, function (i, val) {
     var htmls = '';
       $.each(val, function (j, val2) {
         htmls = val2.innerHTML;
         divsplit.push(htmls);
   });
});

$("html").html('');
$.each(divsplit, function (i, val) {
if (divsplit[i] != "") {
  var data1 = {
  appId: 'Bearer ' + authToken,
  contentType: 'text/html',
  };
  $.ajax({
  url: "https://api.microsofttranslator.com/V2/Ajax.svc/Translate?text=" + divsplit[i] + "&from=" + from + "&to=" + to + "",
  dataType: 'json',
  data: data1,
  json: 'oncomplete',
  success: function (jqXHR, textStatus, errorThrown) {
  var $dom = $(document.createElement("html"));
  var appen = $dom.filter('html').append(jqXHR);
 },
  error: function (jqXHR, textStatus, errorThrown) {
   console.log('fail', this, jqXHR, textStatus, errorThrown);
     }
   });
   }
  });
 });
});

在此处输入图像描述

在此处输入图像描述

4

3 回答 3

0

这对你有用

success: function (jqXHR, textStatus, errorThrown) {
  $("html").append(jqXHR);
}

$("html").html('');只需设置元素的空 HTML 内容html,因此它仍在 DOM 中,页面应该只有一个html元素,当您添加其他html元素时document.createElement("html"),它会使页面无效,并可能导致意外行为

于 2015-11-23T11:02:51.017 回答
0

你试过了吗

$(document).createElement("html")

代替

$(document.createElement("html"))

此外,如果您想使用 jquery 创建一个元素,您可能会使用:

$(document).create("html")

于 2015-11-17T08:45:10.393 回答
0

替换这个:

success: function (jqXHR, textStatus, errorThrown) {
  var $dom = $(document.createElement("html"));
  var appen = $dom.filter('html').append(jqXHR);
}

这样:

success: function (jqXHR, textStatus, errorThrown) {
  $("html").replaceWith(jqXHR);
}

我在代码中看到的其他一些问题,首先......你错过了一个appId.

其次,答案将是JSON这意味着您的整个页面可能会被换成JSON字符串。

让我们知道它是否适合您。

于 2015-11-19T16:11:43.300 回答