Я пытаюсь вызвать GET-запрос несколько раз при заполнении ввода. В основном как фильтр, за исключением того, что он должен вызывать API для каждого нового изменения в строке поиска.
GET работает, потому что при первой загрузке страницы загружаются все данные, потому что строка пуста, но когда я печатаю в строке поиска, она не вызывает функцию PtSearch () внутри setsearch ().
Я регистрирую поиск var в консоли, и он обновляется, как и ожидалось, поэтому единственной проблемой является вызов API.
HTML
<input id="search"
type="text"
class="form-control"
placeholder="Search"
aria-label="Example text with button addon"
aria-describedby="button-addon1"
onchange="setsearch()"/>
JS
var search = ""
function setsearch() {
search = document.getElementById("search").value;
PtSearch();
};
GET
function PtSearch() {
//SEARCH BY FIRST NAME
$(document).ready(function () {
var options = {};
options.url = "https://localhost:44381/api/Patients/" + search;
options.type = "GET";
options.dataType = "json";
options.success = function (patients) {
patients.forEach(function (patient) {
$("#result").append(
"<tr key=" + patient.patientId + ">" +
"<td>" + patient.firstname + "</td>" +
"<td>" + patient.lastname + "</td>" +
"<td>" + patient.dob + "</td>" +
"<td>" + patient.unitId + "</td>" +
"<td align=\"center\">" +
"<button" +
"type=\"button\"" +
"class=\"btn btn-sm btn-warning btnspace\">" +
"Edit" +
"</button>" +
"<button" +
"type=\"button\"" +
"class=\"btn btn-sm btn-danger\"" +
"//onClick={this.handleDelete(patient.patientId)}" +
">" +
"Delete" +
"</button>" +
"</td>" +
"</tr>"
)
});
};
options.error = function () {
$("#msg").html("Error while calling the Web API!");
};
$.ajax(options);
});
API
// GET: api/Patients/5
[HttpGet("{search}")]
public async Task<ActionResult<IEnumerable<Patient>>> GetPatient(string search)
{
List<Patient> patient = await _context.Patient.Where(p => p.Firstname.StartsWith(search)).ToListAsync();
return patient;
}
EDIT
Это то, что он делает после использования кода @ Qonvex620. Я удалил начальный вызов, чтобы страница загружалась без цели, что специально для проверки панели поиска.
Это начальная загрузка. Все хорошо.
Это когда вы вводите одну букву в строке поиска. Все еще работает нормально.
Это когда набирается вторая буква. Вы можете видеть, что внизу таблицы он добавляет поиск вместо перезагрузки и показывает только отфильтрованные данные. ![enter image description here](https://i.stack.imgur.com/CIyFL.png)