JQuery: вызов веб-службы - PullRequest
       6

JQuery: вызов веб-службы

1 голос
/ 25 августа 2010

Я занимаюсь разработкой приложения SilverLight, в котором при закрытии браузера мне нужно выполнить вызов веб-службы.У меня есть метод веб-службы, который принимает один параметр.Когда пользователь нажимает на событие закрытия браузера.Я буду вызывать функцию doRelease ().Для метода releaseuser требуется параметр usertoken.

При вызове функции jQuery CallService () я получил ошибку

Строка: 186 Ошибка: ожидается объект

 var varType;
    var varUrl;
    var varData;
    var varContentType;
    var varDataType;
    var varProcessData;
    //Generic function to call AXMX/WCF  Service        
    function CallService() {
        $.ajax({
            type: varType, //GET or POST or PUT or DELETE verb
            url: varUrl, // Location of the service
            data: varData, //Data sent to server
            contentType: varContentType, // content type sent to server
            dataType: varDataType, //Expected data format from server
            processdata: varProcessData, //True or False
            success: function (msg) {//On Successfull service call
                alert("success");
                ServiceSucceeded(msg);
            },
            error: ServiceFailed// When Service call fails
        });
    }

    function Temp(usertoken) {
        varType = "POST";
        varUrl = "http://localhost/TempWS/MachineHistoryWS.asmx?op=ReleaseUser";
        varData = usertoken;
        varContentType = "application/json; charset=utf-8";
        varDataType = "json";
        varProcessData = true;

        alert("call service");

        CallService();

    }
    function ServiceSucceeded(result) {//When service call is sucessful

        alert("success");

        varType = null; varUrl = null; varData = null; varContentType = null; varDataType = null; varProcessData = null;
    }
    function ServiceFailed(result) {
        alert('Service call failed: ' + result.status + '' + result.statusText);
        varType = null; varUrl = null; varData = null; varContentType = null; varDataType = null; varProcessData = null;
    }



    function doRelease() {

        var usertoken = readCookie("usertoken");


        Temp("usertoken");
    }

Ответы [ 3 ]

1 голос
/ 26 августа 2010

Я решил свою проблему, но не использовал jquery. Вот мое решение.

function sendDataAsXML_SOAP() {
        var req_params = "", url = "", number = 0, type = "";
        /* Configure Parameters */
        url = "http://localhost/TempWS/MachineHistoryWS.asmx";
        user = "129272802615082804";

        req_params = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
        req_params = req_params + "<soap:Body><ReleaseUser>";
        req_params = req_params + "<credentials>" + user + "</credentials></ReleaseUser></soap:Body></soap:Envelope>";
        alert(req_params);
        /* Send XML/SOAP Request To Web Service Using Browser's Javascript DOM */
        try {
            ajax_request = new XMLHttpRequest();
        }
        catch (trymicrosoft) {
            try {
                ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (othermicrosoft) {
                try {
                    ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (failed) {
                    ajax_request = false;
                }
            }
        }
        ajax_request.open("POST", url, true);
        ajax_request.setRequestHeader("Content-Type", "text/xml;charset=utf-8");
        ajax_request.onreadystatechange = receiveXML_SOAPData;
        ajax_request.send(req_params);
    }

    function receiveXML_SOAPData() {
        if (ajax_request.readyState == 4) {
            if (ajax_request.status == 200) {
                alert(ajax_request.responseText);

            }
        }
    }
0 голосов
/ 25 августа 2010

Данные должны быть упакованы как объект.В функции CallService измените:

data: varData, 

на:

data: "{input:'" + varData + "'}",

Измените «input» на фактическое имя параметра в методе вашего веб-сервиса.

0 голосов
/ 25 августа 2010

Это выглядит немного странно: -

function doRelease() { 

    var usertoken = readCookie("usertoken"); 


    Temp("usertoken"); 
} 

Сначала мы предполагаем, что readCookie делает правильную вещь?

Во-вторых, последняя строка должна быть: -

    Temp(usertoken);

В-третьих, где во всем этом угол "Silverlight"?

...