Comment appeler WebMethod?

Je suis en train d'appeler un WebMethod à partir de JavaScript. Pour l'instant j'ai:

La EMSWebService.asmx:

namespace EMSApplication.Web.WebServices
{
    ///<summary>
    ///Holds the Webservice methods of EMSApplication
    </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]     
    [System.Web.Script.Services.ScriptService]
    public class EMSWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

Dans la page aspx, j'ai ajouté les points suivants:

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~/WebServices/EMSWebService.asmx" />
    </Services>
</asp:ScriptManager>
<input onclick="callWebMethod();" id="btn" type="button" value="Click Me" />

Et le JavaScript est:

<script type="text/javascript">
    function callWebMethod() {
        EMSApplication.Web.WebServices.EMSWebService.HelloWorld(OnComplete, OnError);            
    }

    function OnComplete(result) {
        alert(result);
    }

    function OnError(result) {
        alert(result.get_message());
    }

</script>

Mais la méthode n'est pas en cours d'exécution. Je suis d'erreur JavaScript suivant:

EMSApplication pas défini.

Est-ce que je suis absent? Ai-je besoin de faire quelque chose d'autre configuration?

Le Projet de la structure est représentée ci-dessous:

Comment appeler WebMethod?

JavaScript et les composants dans la Connexion.aspx.

Est là toute l'importance de l'URL de [WebService(Namespace = "http://tempuri.org/")]


Edit:

J'ai aussi essayé en utilisant jQuery et modifier la page aspx:

$(document).ready(function () {
        $("#btn").click(function () {                
            $.ajax({
                type: "POST",
                url: "../WebServices/EMSWebService.asmx/HelloWorld",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    alert(response.d);                        
                },
                failure: function (msg) {                        
                    alert(msg.d);
                }
            });
            return true;
        });
    });

J'ai écrit System.Diagnostics.Debug.WriteLine("Hello World"); à l'intérieur de la WebMethod, il est en cours d'exécution que c'est a dire qu'il est l'impression de "Hello World" dans la Fenêtre de Sortie de Visual Studio, mais je n'obtiens pas de message d'alerte.

Définissez un point d'arrêt sur le côté client, par exemple, à l'intérieur de Google Chrome excellents outils de développement pour voir ce qui se passe avant/après l'appel ajax.
Pouvez-vous vérifier que le scripthandlerfactory est définie dans le web.config?
Non, je n'ai pas défini de scripthandlerfactory dans le web.config. Que dois-je faire?
Lire ici msdn.microsoft.com/en-us/library/bb398998.aspx cette page va sur ce que vous devez faire pour appeler les services web à partir d'un script.
vous pouvez poster votre réponse. Afin que je puisse l'accepter. Il est résolu après l'utilisation de <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/> dans le <httpHandlers/> de <system.web/>. Je vous remercie beaucoup.

OriginalL'auteur Tapas Bose | 2012-03-24