When I select some specific field of a form, I trigger a request to load some essential information to complete the form, but when selecting a form field it triggers 3, 4 requests and this causes my data of an option for example get duplicates inside the form.
// requisição
$('body').on('click', '#cmbContrato', function () {
contrato = $("#cmbContrato").val();
$.ajax({
type: 'GET',
url: 'ProtocoloExterno/GetItensContrato',
data: { dado: contrato },
dataType: 'JSON',
success: function (dados) {
if (dados !== 0) {
var selectbox = $('#cmbItensContrato');
$.each(dados, function (i, d) {
$('<option>').val(d.id).text(d.value).appendTo(selectbox);
});
}
}
},
error: function () {
console.log("Erro ao enviar AJAX");
}
});
});
// metodo em c# asp.net mvc
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public JsonResult GetItensContrato()
{
List<object> resultado = new List<object>();
long numeroContrato = 0;
if (Request.QueryString["dado"] != "")
{
numeroContrato = long.Parse(Request.QueryString["dado"]);
}
var infosContrato = db.ItemContrato.Where(c => c.ContratoId == numeroContrato.ToString()).Select(c => c.ItemRCid);
foreach(int itensContrato in infosContrato)
{
resultado.Add(new { id = itensContrato, value = itensContrato });
}
return Json(resultado, JsonRequestBehavior.AllowGet);
}
How can I solve this problem?