Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

94
Views
La cadena json en el método de acción POST a MVC usando AJAX es nula

Me resulta difícil averiguar por qué la cadena enviada a través de la solicitud AJAX es nula. Console.WriteLine (datos) se muestra vacío. El estado es 200 OK. Si agrego algún código para analizar la cadena recibida, aparece un error que indica que JObject.Parse no puede ser nulo. No sé lo que me estoy perdiendo. El código javascript está bien. El método de acción también parece estar bien, pero mi conocimiento sobre Asp.Net Core y MVC es muy escaso, por lo que no estoy seguro. ¿Puede alguien señalar lo que me estoy perdiendo?

El código javascript:

 let obj = {email: email_address.value}; let objStringified = JSON.stringify(obj); $.ajax({ type: 'POST', contentType: 'application/json; charset=UTF-8', data: objStringified, url: '@Url.Action("ReturnCheckAccountDuplication")', dataType: 'text', success: function(data) { console.log(data); }, error: function(error) { console.log("Keep trying", error); } });

Código C#:

 [HttpPost] public ActionResult ReturnCheckAccountDuplication([FromBody] string data) { Console.WriteLine(data); JObject jObject = JObject.Parse(data); string email = (string)jObject["email"]; bool emailExists = CheckAccountDuplication.Get(email); string returnResult = emailExists.ToString(); return Content(returnResult); }

La solución en el lado del controlador es

 public class AccountCheckModel { public string Email { get; set; } } [HttpPost] public ActionResult ReturnCheckAccountDuplication([FromBody] AccountCheckModel data) { string result = CheckAccountDuplication.Get(data.Email).ToString(); return Content(result); }

Gracias a todos los miembros que comentaron sobre mi problema, especialmente a John Glenn, que proporcionó una solución. Llevaba varios días intentándolo pero sin éxito. Mi conocimiento de Asp.Net Core es muy pobre. Muchísimas gracias.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La solución más sencilla es crear un modelo que represente los datos JSON que recibirá su controlador. Por ejemplo, crea una clase así:

 public class AccountCheckModel { public string email { get; set } }

Luego, utilícelo como parámetro para su método de controlador:

 public ActionResult ReturnCheckAccountDuplication([FromBody] AccountCheckModel data)

Esta es la forma preferida de acceder al cuerpo de la solicitud. Para obtener el cuerpo de la solicitud como una cadena, debe pasar por algunos obstáculos serios .

about 4 years ago · Juan Pablo Isaza Report

0

Una forma alternativa de enviar sus datos a través de AJAX a su Controller :

 var json = { email: email_address.value }; $.ajax({ type: 'POST', data: {'json': JSON.stringify(json)}, url: '@Url.Action("ReturnCheckAccountDuplication")', dataType: 'json', success: function(data) { console.log(data); }, error: function(error) { console.log("Keep trying", error); } });

Y su Controller :

 [HttpPost] public ActionResult ReturnCheckAccountDuplication(string json) { Console.WriteLine(json); JObject jObject = JObject.Parse(json); string email = (string)jObject["email"]; bool emailExists = CheckAccountDuplication.Get(email); string returnResult = emailExists.ToString(); return Content(returnResult); }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!