Como consumir un servicio web en jQuery

publicado por: Anonymous

Tengo un cliente en C# que consume un servicio web pasando varios parametros.

Lo que estoy buscando hacer es traducir esta llamada que esta hecha en C# y hacerla en jQuery.

He buscado en varios foros pero la información no esta completa.

Podrian indicarme como poder traducir el siguiente codigo y el explicarme una vez este hecho el codigo en jQuery como se ejecuta?

Muchas gracias

protected void Page_Load(object sender, EventArgs e)
{
dynamic myURL;
dynamic myKey;
dynamic myBlockURL;
dynamic myUser;


//TODO: Change the following based on your BPI information.
myURL = "http://localhost/test/webservice.asmx/test";
myKey = "BIA38KRVQ6V2MQnvmUnC";
myBlockURL = "http://localhost/test/test.aspx?blockid=_zu&culture=&userid=";

//TODO: Change the following to the username of the person logged in
myUser = "User1";

// Create a server object to use to encrypt the user ID
dynamic objHTTP;
objHTTP = Interaction.CreateObject("WinHttp.WinHttpRequest.5.1");
objHTTP.open("POST", myURL);
objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


 /*Construct a URL with a query string to encrupt the user ID*/
 dynamic strPost;
 strPost = "sourcetxt=" + myUser + "&Key=" + myKey;

 // Construct a URL with a query string to encrupt the user ID
 strPost = null;
 strPost = "sourcetxt=" + myUser + "&Key=" + myKey;

 // Perform the query
 objHTTP.Send(strPost);

 // Retrieve the encrypted user ID from the result of the query
 dynamic encryptedID = null;
 if (objHTTP.statusText != "Unauthorized" & objHTTP.statusText != "Not Found")
 {
     dynamic oXMLDoc = null;
     oXMLDoc = Interaction.CreateObject("MSXML2.DOMDocument");
     oXMLDoc.loadXML(objHTTP.ResponseText);
     encryptedID = oXMLDoc.getElementsByTagName("string")(0).childNodes(0).text;
     objHTTP = null;
 }

 // Output some HTML with an iFrame, the BPI block URL and the encrypted user ID
 Response.Write(" <iframe src='" + myBlockURL + encryptedID + "' id='Test' scrolling='yes' width='900' height='400'></iframe>");
}

Aqui esta el codigo que hago tratando de imitar en ajax:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("[id*=btnSubmit]").click(function () {
            var myURL = $.trim($("[id*=myURL]").val());
            var myKey = $.trim($("[id*=myKey]").val());
            var myBlockURL = $.trim($("[id*=myBlockURL]").val());
            var myUser = $.trim($("[id*=myUser]").val());

            $.ajax({
                type: "POST",
                url: "http://localhost/test/webservice.asmx/test",
                data: "{ myURL: '" + myURL + "', myKey: " + myKey + ",myBlockURL:" + myBlockURL + ",myUser:" + myUser + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    alert(r.d);
                },
                error: function (r) {
                    alert(r.responseText);
                },
                failure: function (r) {
                    alert(r.responseText);
                }
            });
            return false;
        });
    });
</script>

solución

Usando jquery el codigo generado es completamente diferentes al de c#

Usarias $.ajax

Call (Consume) Web Service (ASMX) using jQuery AJAX in ASP.Net

Como observaras la idea es usar una estructura como esta

   $.ajax({
        type: "POST",
        url: "Service.asmx/GetDetails",
        data: "{ name: '" + name + "', age: " + age + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {
            alert(r.d);
        },
        error: function (r) {
            alert(r.responseText);
        },
        failure: function (r) {
            alert(r.responseText);
        }
    });

En tu caso en el parametro url de $.ajax indicarias el /webservice.asmx/test

Puedes indicarle en el data la información que enviarias a los parametros del servicio.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *