Ajax jQuery pasando múltiples servicios web de parámetros.

 $('#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(); } }); });  
Registration Form



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

Soy un principiante en Ajax Jquery y estoy haciendo ejercicio para mejorar mi conocimiento 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.

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.

En lugar de tratar de construir la cadena por concatinació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 una coma, por ejemplo, en uno de sus campos. Sin embargo, tenga en cuenta que ie7 y versiones inferiores requerirán que incluya un archivo llamado json2.js ( github ).

Editar: Además, intente ejecutar su servicio web manualmente (solo busque la url, use un póster, etc.). Es completamente posible que esté obteniendo un error 404 o de servidor.

Edita la 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 de que “Log Request and Response Bodies” esté marcado en su menú desplegable. De esta manera puedes ver las peticiones salir y volver. Si no ve uno, entonces es un problema con su javascript, no con el ajax.

Otra edición: También veo que su evento de clic no está en $ (document) .ready (function () {}); Puede 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ás ejecutando el código ajax.

usa esta syntax ….

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

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]