使用 JavaScript 将 ajax 的结果附加到文本区域

Appending a result from ajax into a textarea using JavaScript

如何将 ajax 的结果附加到文本区域?我正在使用代码点火器。我想将我在控制器中获得的值附加到 textarea。

这是我的控制器中传递的查询结果,将附加到我的文本区域中:

checkup_diagnosis: [2]
  0: Object
     diagnosis: "Java"
  1: Object
     diagnosis: "Scala"

现在我想将这两个值插入到我的文本区域中。这是我尝试过的,其中 #modaldiagnosis 是我的文本区域的 ID:

function view_profile(check_up_date,check_up_id) {
 $.ajax({
    url: siteurl+"search_records/view_profbtn",
    type: "POST",
    data: {check_up_id:check_up_id, check_up_date:check_up_date},
    dataType: "JSON",
    success: function(data){
        for(i=0;i<data.length;i++) {
             $('#modaldiagnosis').append(data['checkup_diagnosis'][i]['diagnosis']);  
        }
    }
  });
}

我相信你会需要

for(i=0; i<data['checkup_diagnosis'].length; i++) {
    $('#modaldiagnosis').append(data['checkup_diagnosis'][i]['diagnosis']);  
}

您可以使用 .val() 来设置文本区域元素的内容。要附加到现有值,您可以这样做:

var md = $("#modaldiagnosis")
md.val(md.val() + valueToAppendHere)

但是,在循环中重复更新相同的 DOM 元素并不是一个好主意。最好使用循环来创建要附加的字符串,然后更新 DOM 元素一次, 循环之后。

此外,您可能希望在每个值之间添加换行符或逗号或其他内容。这是一种方法:

var data = {
  checkup_diagnosis: [
    { diagnosis: "Java" },
    { diagnosis: "Scala" }
  ]
}

$("button").click(function() {     // button with click handler for demo purposes only

  var newData = data['checkup_diagnosis']        // take the input array,
    .map(function(v) { return v['diagnosis'] })  // map it to get the required values,
    .join(", ")                                  // join the result with commas
  var md = $('#modaldiagnosis')
  md.val(md.val() + newData)
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="modaldiagnosis"></textarea>
<button>Test</button>

显然,在我的演示中使用按钮单击的地方,您会有一些 Ajax 代码。您可以在演示中看到数据被添加到文本区域中已有内容的末尾 - 测试是否已经存在值并添加额外的逗号(或您想要的任何其他格式)留作 reader...