Tengo una casilla de verificación en la vista, quiero que devuelva datos del controlador cuando esté marcada, se muestra en la vista y se muestra en los cuadros de entrada.
<input class="js-recipient-is-me" type="checkbox"/>JavaScript:
$('.js-recipient-is-me').change(function () { if (this.checked) { $('.js-input-field').addClass('disabled'); $.ajax({ url: '/Cart/GetUserInfo', }); } else { $('.js-input-field').removeClass('disabled'); } });Entradas HTML:
<input type="text" id="mobile" class="js-input-field" name="name" /> <input type="text" id="name" class="js-input-field" name="name" /> <input type="text" id="family" class="js-input-field" name="name" />Controlador :
public async Task<JsonResult> GetUserInfo() { CurrentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var userinfo = await _scope.GetUserInfo(Guid.Parse(CurrentUserId)); return Json(0); } userinfo es una matriz de cadenas y tiene tres valores: ["Mobile", "name", "family"]
Quiero poner valores de información de userinfo en las entradas...
¿Cómo se hace?
Debe agregar una devolución de llamada para manejar los datos recibidos del servidor. Puede hacer esto usando done() después de la solicitud ajax .
$.ajax({ type: "GET", url: '/Cart/GetUserInfo' }) .done( function(data) { $('#mobile').val(data[0]); $('#name').val(data[1]); $('#family').val(data[2]); }); También debe pasar los datos del controlador a la vista. Actualmente, parece que siempre devuelves 0 . Devuelva el objeto de información de userinfo de esta manera: return Json(userinfo);
public async Task<JsonResult> GetUserInfo() { CurrentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var userinfo = await _scope.GetUserInfo(Guid.Parse(CurrentUserId)); return Json(userinfo); } También debe dar a sus entradas los name apropiados: todos comparten el nombre, lo que podría causar problemas con el envío de un formulario regular, por ejemplo: <input type="text" id="mobile" class="js-input-field" name="mobile" />