J'ai un service Web en c # et je l'appelle à partir de mon script jquery.
C'est le service web en c #
[WebMethod] [ScriptMethod(UseHttpGet = true)] public void LoadService2Daily(string fromDate, string toDate, string[] campaigns)
Dans le script, je fais ceci:
var selectedCampaigns = $("#campaignDiv input:checkbox:checked").map(function () { return $(this).val(); }).get(); console.log(selectedCampaigns); webServiceUrl = 'http://localhost:4025/vmp_webservice.asmx/LoadService2Daily'; $.getJSON(webServiceUrl, { fromDate: valFrom, toDate: valTo, campaigns: selectedCampaigns }) .done(function (result) {
J'ai reçu une erreur 500 et, lorsque je vérifie la réponse, c'est une référence d'objet non définie sur une instance d'un objet.
Si j'ai supprimé la string[] array
du service Web, cela fonctionne parfaitement, mais quand je l'ajoute, il a cessé de fonctionner. Donc je suis sûr que c'est parce que la string array
, mais je ne sais pas où est exactement l'erreur.
Le code sans le tableau fonctionne depuis 3 ans sans aucun problème, mais maintenant je fais un montage et je dois passer ce tableau.
Il s'agit d'une capture d'écran de console.log
pour imprimer les console.log
sélectionnés. Notez que, comme je vous l'ai montré dans le code, ce journal est pris avant d'appeler le service Web
J'ai remarqué que l'URL du service web était
Request URL:http://localhost:4025/vmp_webservice.asmx/LoadService2Daily?fromDate=2014-05-25+00%3A00%3A00&toDate=2014-05-25+23%3A59%3A01&campaigns%5B%5D=default&campaigns%5B%5D=Support
Car il ne contient pas le groupe de chaînes, n'est-ce pas?
C'est toute l'exception que je reçois
System.NullReferenceException: Object reference not set to an instance of an object. at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection) at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request) at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
L'URL qui est générée comporte des crochets, pouvez-vous vérifier si cela fonctionnera sans crochets, c'est-à-dire sans% 5B et% 5D (sans encodage url)
http://localhost:4025/vmp_webservice.asmx/LoadService2Daily?fromDate=2014-05-25+00%3A00%3A00&toDate=2014-05-25+23%3A59%3A01&campaigns=default&campaigns=Support