我正在尝试遍历表中的每一行并使用书籍和作者值,我进行 api 调用并获取一些详细信息并填充我的字符串。我在这里遇到的问题是,当我点击提交时,我的 str_tot 是空的。当我添加警报语句以找出发生这种情况的原因时,.each 函数似乎一次从表中获取所有值,然后仅使用最后一个值进入 api 调用循环。
api 调用有 1 秒的延迟来进行调用和获取信息。这有点奇怪,我用尽了我试图找出问题的选择。任何帮助深表感谢。
<table id="list">
<thead>
<th>Author</th>
<th>Book</th>
</thead>
<tbody>
<tr>
<td class="check"><input type="checkbox" checked></td>
<td class="author">Name1</td>
<td class="book">Book1</td>
</tr>
...
...
...
<tr>
<td class="author">Name10</td>
<td class="book">Book10</td>
</tr>
</table>
<script>
var str_tot = " ";
$('#submit').click(function () {
$('#list > tbody > tr').each(function () {
var author = $(this).find('td.author').val();
var book = $(this).find('td.book').val();
if($(this).find('td.check').find("input").is(':checked')) {
var url = "http://api.book.com/some/link/search?query="+author+"&title[]=booktitle:"+book;
$.getJSON(url, function(data) {
var book = data.result[0]["book"];
var author = data.result[0]["author"];
});
str_tot = str_tot + " " + author + " " + book;
});
});
</script>