web-dev-qa-db-fra.com

JQuery AJAX Consommer SOAP Service Web

J'ai expérimenté et essayé d'apprendre JQuery, en utilisant AJAX pour consommer un service Web SOAP que j'avais écrit il y a quelque temps). Ci-dessous, le code que j'utilise :

<script type="text/javascript">
    var webServiceURL = 'http://local_server_name/baanws/dataservice.asmx?op=GetAllCategoryFamilies';
    var soapMessage = '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><GetAllCategoryFamilies xmlns="http://tempuri.org/" /></soap12:Body></soap12:Envelope';

    function CallService()
    {
        $.ajax({
            url: webServiceURL, 
            type: "POST",
            dataType: "xml", 
            data: soapMessage, 
            contentType: "text/xml; charset=\"utf-8\"",
            success: OnSuccess, 
            error: OnError
        });

        return false;
    }

    function OnSuccess(data, status)
    {
        alert(data.d);
    }

    function OnError(request, status, error)
    {
        alert('error');
    }

    $(document).ready(function() {
        jQuery.support.cors = true;
    });
</script>

<form method="post" action="">
    <div>
        <input type="button" value="Call Web Service" onclick="CallService(); return false;" />
    </div>
</form>

Actuellement, la méthode appelée dans le service Web renvoie un tableau de familles de catégories contenant un code de catégorie et une description de catégorie. Étant donné que la méthode renvoie XML, j'ai défini la requête ajax en conséquence. Cependant, lorsque j'exécute l'application, j'obtiens une boîte d'alerte "erreur" - je suis sûr de la cause du problème. Je sais que le service Web fonctionne, il est appelé plusieurs centaines de fois par jour par d'autres applications Web .NET que j'ai écrites.

Toute aide serait grandement appréciée.

Merci,

12
Andy Evans

Essayez de définir processData: false drapeau. Ce drapeau est true par défaut et je suppose que jQuery est conversion votre XML en chaîne.

$.ajax({
    url: webServiceURL, 
    type: "POST",
    dataType: "xml", 
    data: soapMessage, 
    processData: false,
    contentType: "text/xml; charset=\"utf-8\"",
    success: OnSuccess, 
    error: OnError
});
23
Mrchief