如何使用 api 设置要翻译的文本值

How to set text value to translate using api

我想制作一个将英语翻译成 Yodish 的简单应用程序,但我不知道如何指示我的文本框的值。

我正在尝试获取数据文本属性。我管理如何替换适当字段中的文本,但我仍然得到初始值而不是当前值。

这是我得到的:https://imgur.com/k5vdLes

更准确地说,我是这样做的:

"data": { text: $("#input").val() }

我要实现这个效果:https://www.yodaspeak.co.uk/
这是数据内容:https://imgur.com/GMUkem3

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://yodish.p.rapidapi.com/yoda.json?text=Master%20Obiwan%20has%20lost%20a%20planet.",
  "method": "POST",
  "headers": {
    "x-rapidapi-host": "yodish.p.rapidapi.com",
    "x-rapidapi-key": "...",
    "content-type": "application/x-www-form-urlencoded"
  },
  "data": {
    text: $("#input").val()
  }
}

$("#button").click(function() {
  $.getJSON(settings).done(function(data) {
    $("#result").text(data.contents.translated);
  })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="translator">
  <input type="text" id="input" value="Obi wan">
  <button id="button">Convert to Yoda-Speak!</button>
  <textarea id="result"> Asdasdas.  Herh herh herh.</textarea>
</div>

问题是 where/when 您定义了 settings 的值 您需要在点击函数中执行此操作才能获得输入的当前值(请参阅代码段)。这就是为什么你总是得到初始值,因为你在它被改变之前阅读它。

$("#button").click(function() {
  var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://yodish.p.rapidapi.com/yoda.json",
    "method": "POST",
    "headers": {
      "x-rapidapi-host": "yodish.p.rapidapi.com",
      "x-rapidapi-key": "...",
      "content-type": "application/x-www-form-urlencoded"
    },
    "data": {
      text: $("#input").val()
    }
  }
  $.getJSON(settings).done(function(data) {
    $("#result").text(data.contents.translated);
  })
  console.log(settings.data)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="translator">
  <input type="text" id="input" value="Obi wan">
  <button id="button">Convert to Yoda-Speak!</button>
  <textarea id="result"> Asdasdas.  Herh herh herh.</textarea>
</div>