Esta debe ser una respuesta realmente simple, pero no puedo ver dónde me estoy equivocando.
Simplemente escribiendo una solicitud de prueba AJAX con el código c# detrás. No puedo hacer que c# devuelva una declaración verdadera/falsa, o no puedo hacer que AJAX la reconozca como verdadera/falsa.
[WebMethod] public static bool testme(int testnumber) { if (testnumber < 12) { return true; } else { return false; } }AJAX:
<script> $(document).ready(function () { $('#test').click(function () { $.ajax({ type: "post", url: "WebForm1/testme", data: { testnumber: 13 }, contentType: "application/json; charset=utf-8", datatype: "json", success: function (data) { if (data) { console.log("true"); } else { console.log("false"); } }, Error:function(error){ console.log("error"); } }); }); }) </script>Botón:
<input type="button" id="test" value="click me"/>El archivo console.log muestra verdadero, aunque el número que estoy ingresando es mayor que 12, lo que debería devolver el bool "falso" del método c#.
su verificación if(data) está verificando la veracidad, data serán un objeto, así que mire sus propiedades y puede encontrar el resultado de C #.
Si no está familiarizado con la veracidad de JS, búsquelo para obtener una mejor descripción: pero cada variable se considera veraz si tiene un valor válido, si es nulo o indefinido (o 0 o ''), entonces no se considerará veraz y fallará una verificación booleana.
Cuando obtiene una respuesta de un WebMethod como este, debe usar un .d para hacer referencia al valor. Su código actual simplemente verifica si obtuvo una respuesta y lo más probable es que siempre se evalúe como verdadero.
<script> $(document).ready(function () { $('#test').click(function () { $.ajax({ type: "post", url: "WebForm1/testme", data: { testnumber: 13 }, contentType: "application/json; charset=utf-8", datatype: "json", success: function (data) { if (data.d) { console.log("true"); } else { console.log("false"); } }, Error:function(error){ console.log("error"); } }); }); }) </script> Un puntero también que puede ayudarlo a descubrir qué está sucediendo sería usar la pestaña de red de las herramientas de desarrollo de su navegador (F-12) para ver el formato de respuesta que regresa del servidor. No solo devuelve verdadero o falso, sino que devuelve d: true o d: false , por lo tanto, el cambio que mencioné.
Cada vez que tengo que usar Ajax, vuelvo desde el objeto de función JSON. Por ejemplo:
return Json(new { result = true });y en AJAX:
<script> $(document).ready(function () { $('#test').click(function () { $.ajax({ type: "post", url: "WebForm1/testme", data: { testnumber: 13 }, contentType: "application/json; charset=utf-8", datatype: "json", success: function (data) { if (data.result === true) { console.log("true"); } else { console.log("false"); } }, Error:function(error){ console.log("error"); } }); }); }) </script>