Ajax jquery pasando múltiples parámetros servicios web

<script type="text/javascript">
        $('#btnregister').click(function () {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "fetchusers.asmx/RegUsers",
                data: "{ username: '" + $("#txtuser").val() + "name: '" + $("#txtname").val() + "'}",
                dataType: "json",
                success: function (data) {
                    alert("Successfully register");
                    $("#btnregclose").click();
                }
            });
        });
    </script>

<div id="registration">
        <fieldset>
            <legend>Registration Form</legend>
                <input id="txtuser" type="text" placeholder="Username" /><br />
                <input id="txtname" type="text" placeholder="Name" /><br />
                <input id="txtpass" type="password" placeholder="password" /><br />
                <input id="txtconfirmpass" type="password" placeholder="confirm password" /><br />
                <input id="btnregister" type="button" value="Register" />
                <input id="btnregclose" type="button" value="close" />
        </fieldset>
    </div>


[WebMethod]
        public string RegUsers(string username, string name)
        {
            string response = username + name;

            return response;
        }

Soy principiante en Ajax Jquery y estoy haciendo ejercicio para mejorar mis conocimientos al respecto. Mi problema es que cuando hago clic en #btnregister no funciona. Creo que hay un problema en los parámetros que pasé en el ajax, pero no sé cuál es.

preguntado el 15 de mayo de 13 a las 04:05

4 Respuestas

prueba esto :

 $(document).ready(function () {
        $('#btnregister').click(function () {
            var obj = { username: $("#txtuser").val(), name: $("#txtname").val() };
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "fetchusers.asmx/RegUsers",
                data: JSON.stringify(obj),
                dataType: "json",
                success: function (data) {
                    alert("Successfully register");
                    $("#btnregclose").click();
                }
            });
        });
    });

esto funcionó en mi entorno local.

contestado el 15 de mayo de 13 a las 04:05

En lugar de intentar construir la cadena por concatenación, podría ser más fácil hacer algo como esto:

$.ajax(url, {
    data: JSON.stringify({
        username: $("#txtuser").val(),
        name: $("#txtname).val()
    })
});

Evitará errores tipográficos/problemas que podrían ocurrir si tiene, por ejemplo, una coma en uno de sus campos. Sin embargo, tenga en cuenta que ie7 y versiones anteriores requerirán que incluya un archivo llamado json2.js (gitHub).

Editar: Además, intente ejecutar su servicio web manualmente (simplemente busque la URL, use un póster, etc.). Es muy posible que esté recibiendo un 404 o un error del servidor.

Editar parte 2: una buena manera de depurar problemas de ajax en Firefox es usar ctrl-shift-k para abrir la consola web. Asegúrese de que "Net" esté habilitado y que "Registrar cuerpos de solicitud y respuesta" esté marcado en su menú desplegable. De esta manera, puede ver las solicitudes que salen y regresan. Si no ve uno, entonces es un problema con su javascript, no con el ajax.

Otra edición: además, veo que su evento de clic no está en un $ (documento). Listo (función () {}); Podría ser que esté adjuntando el evento de clic antes de que se represente el botón. Por lo tanto, el evento no está adjunto y ni siquiera está ejecutando el código ajax.

contestado el 15 de mayo de 13 a las 04:05

usa esta sintaxis....

data: "{ 'username': '" + $("#txtuser").val() + "', 'name': '" + $("#txtname").val() + "'}",

contestado el 15 de mayo de 13 a las 04:05

agregue un punto de interrupción en la función de servicio web y luego verifique si están los valores de los parámetros ... - felix antony

sí, hice eso. Pero no va al servicio web: carlo adapt

comprobar alerta($("#txuser").val()); - felix antony

sabes agregar depurador en javascript.../ - felix antony

¿que es eso? ¿Dónde debo colocar eso? - carlo adapt

El código en la pregunta es correcto, necesita una solución simple. Vaya al archivo yourwebservice.asmx.cs y elimine el comentario de la siguiente línea dada a nivel de clase, esto resolverá el problema de llamar a este servicio web desde jQuery o Ajax.

[System.Web.Script.Services.ScriptService]

Respondido 25 ago 16, 15:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.