没有追加的翻译数据不适用于ajax成功的整页

时间:2015-11-17 07:03:03

标签: c# jquery asp.net ajax microsoft-translator

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

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

由于翻译数据的限制,数据转换工作正常我只是切片元素并转换innerhtml数据,因为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);
     }
   });
   }
  });
 });
});

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

你试过吗

$(document).createElement("html")

而不是

$(document.createElement("html"))

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

$(document).create("html")

答案 1 :(得分: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字符串。

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

答案 2 :(得分:0)

这对你有用

findUsersWhoBookedLastMonth: function(cb){
    var dateM30J = moment().subtract(30,'days').format();
    console.log(dateM30J);
    Reservation.find({
      select: ['user'],
      where:{
        date:{
          '>=' : dateM30J
        }
      },
    }, function(err, user_ids) {
        if (err) {
          console.log('ERROR: ' + err);
          cb(err, null)
        }
        else {
          user_ids = _.uniq(user_ids);
          cb(null, user_ids)
        }
      });

  },

success: function (jqXHR, textStatus, errorThrown) { $("html").append(jqXHR); } 只需设置$("html").html('');元素的空HTML内容,因此当您添加其他{{1}时,它仍然在DOM中,页面应该只有一个html元素} element html它使页面无效,可能导致意外行为