8
votes

Publier des données JSON à .asmx Webservice

J'essaie de poster des paramètres simples à un service Web .asmx.
Je reçois l'erreur suivante: le format de demande est invalide: application / json; Charset = utf-8. em> strong>
Ce dont j'ai vraiment besoin, c'est de pouvoir passer un objet complexe, mais je ne peux pas passer à faire une demande de post avec le type de contenu JSON.

Voici ma définition de service Web P>

function JsonTest2() {
    $.ajax({
        type: 'POST',
        url: "http://localhost/WebServices/MyTest.asmx/JsonTest2",
        data: "{myparm1:105,myparm2:23}",
        contentType: 'application/json; charset=UTF-8',
        dataType: 'json',
        async: false,
        success: function (msg) {
            alert(msg);
        },
        error: function (msg) {
            alert('failure');
            alert(msg);
        }
    });
}


1 commentaires

quelle version asp.net utilisez-vous? Ne devrait-il pas y avoir msg.d dans le rappel du succès?


3 Réponses :


5
votes

Assurez-vous que votre classe de service ASMX est décorée avec l'attribut [scriptservice] .


1 commentaires

Ce serait bien si vous mentionnez la version minimale requise pour cela.



2
votes

Vous devez utiliser comme data la valeur formatée en tant que données JSON correctes: xxx

au lieu de xxx < p> Vous pouvez valider sur le site http://www.jsonlint.com/ quelles données sont des données JSON . Donc, vous devriez changer votre code en xxx

en cas de paramètres d'entrée plus complexes, je vous recommande d'utiliser json.stringify FonctionFROM JSON2.JS (voir Cette réponse par exemple): xxx

dans la dernière version de $. AJAX Utilisation Le MyValue1 et MYVALUE2 peut être des structures complexes (objets contenant des propriétés) ou des tableaux ayant même une autre structure complexe ou des tableaux comme propriétés.


0 commentaires

0
votes

Assurez-vous que l'URL contient le numéro de port lors de l'utilisation de Localhost. xxx


0 commentaires