web-dev-qa-db-fra.com

Jquery AJAX Message: 500 (erreur interne du serveur)?

J'essaie de publier une chaîne sur le service Web, mais le message d'erreur suivant s'affiche (projet d'extension Google Chrome):

jquery-2.1.1.min.js: 4 POST http: // localhost: 49242/Service.asmx/test 500 (erreur interne du serveur)

Voici mon code ajax:

var data = {};
data.param1 = words[0];

$.ajax({
    data: JSON.stringify({ 'data': data.param1 }),
    dataType: 'application/json',
    url: 'http://localhost:49242/Service.asmx/test',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (result) {
        alert(result);
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

Mon service:

[WebMethod]

[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public string test(string param1) {
    return param1;
}

Je travaille sur ce problème environ 3 jours. Pouvez-vous m'aider ?

Au fait, j'ai une question. Je poste une variable json au service avec ajax (comme vous le voyez), mais le service renvoie une valeur xml. Y at-il un problème ou [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] ce problème de résolution de bloc de code?

2
user5535577

Votre erreur provient de votre paramètre de données. Stringify data object au lieu de { 'data': data.param1 }:

var data = {};
data.param1 = words[0];

$.ajax({
    data: JSON.stringify(data),
    dataType: 'application/json',
    url: 'http://localhost:49242/Service.asmx/test',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (result) {
        alert(result);
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

Vos données stringifiées donneront {"param1":"Words"}, votre service devrait alors pouvoir lier le paramètre param1.

4
Fabien PERRONNET

Je faisais face à ce type d'erreur le AJAX la réponse. Je passais trop de temps derrière cette question et je l'ai finalement attrapée.

Une erreur interne 500 est générée, car la réponse AJAX contient beaucoup de contenu du serveur et renvoie donc un délai d'exécution.

Donc, je viens d'ajouter la ligne ci-dessous et ça fonctionne bien.

Page.Server.ScriptTimeout = 300;
0
Jitendra G2