Hasta ahora había estado usando los componentes AJAX directamente con webservice y ningun problema, hace un par de semanas estoy intentando optimizar mas la aplicacion usando jQuery directamente con los webservice. Encontre varias guias pero la que me ah parecido mas completa es [URL="http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery"]esta[/URL], y la estoy intentando seguir, pero al momento de llamar la funcion de jquery que se comunica con el webservice truena y en el error solo dice undefined, eh estado buscando posibles soluciones pero hasta ahora nada.
Mi ASPX es este:
Código:
El Webservice que tengo programado es este:<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default3.aspx.vb" Inherits="Default3" title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <script type="text/javascript"> function prueba(){ $.ajax({ type: "POST", url: "WS_Productos.asmx/GetProductosNombreID", //beforeSend: function(xhr) {xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");}, //data: "{ 'nombre':"+"'" + $get('<%= txtbuscaidproducto.ClientID %>').value + "'}", //data: "nombre=jorgelig", data: "{nombre: " + $get('<%= txtbuscaidproducto.ClientID %>').value + " }", contentType: "application/json; charset=utf-8", dataType: "json" , success: function(response) { alert($get('<%= txtbuscaidproducto.ClientID %>').value); var productos = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; $('#output').empty(); for(var i=0;i< productos.length;i++){ $('#output').append('<p>' + productos[i].Id_producto + ', ' + productos[i].Nombre + ', ' + productos[i].Precio + '</p>') } }, error: function(msg,status,error) { $('#output').text(msg); //alert(msg.toString ); //$('#output').html('ERROR '+ msg.valueOf ); } }); } </script> <asp:TextBox ID="txtbuscaidproducto" runat="server" Width="274px"></asp:TextBox> <input id="btn_htmlfiltrar" class="cssboton" type="button" value="FiltrarAJax" onclick="prueba()" /> <div id="output">PRUEBA</div> </asp:Content>
Código:
<%@ WebService Language="VB" Class="WS_Productos" %> Imports System.Web Imports System.Web.Services.Protocols Imports System.Web.Services Imports System.Web.Script.Services Imports System.Web.Script.Serialization Imports System.Collections.Generic <System.Web.Script.Services.ScriptService()> _ <WebService(Namespace:="http://tempuri.org/")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Public Class WS_Productos Inherits System.Web.Services.WebService <WebMethod()> _ Public Function GetProductosNombreID(ByVal nombre As String) As List(Of Normay.ElArco.Source.DataBase.Producto.Producto) Dim Productos As New List(Of Normay.ElArco.Source.DataBase.Producto.Producto) Dim ent As New Normay.ElArco.Source.DataBase.ConsultasGenerales Dim dr As MySql.Data.MySqlClient.MySqlDataReader Dim sql As String sql = "SELECT id_producto,nombre,costo,precio FROM Producto WHERE nombre LIKE '%" & nombre & "%';" dr = ent.LlenaDataReader(sql) For i = 0 To dr.FieldCount Productos.Add(New Normay.ElArco.Source.DataBase.Producto.Producto(dr("id_producto"), dr("nombre"), dr("costo"), dr("precio"))) Next ent.CerrarConeccion() dr.Close() Return productos End Function