This article will explain how to consume web services using JavaScript
in SharePoint Web Part.
Problem: you have developed a custom web service; you need to
consume this in client side for a web part.
The following article will explain how to consume it in
ASP.Net. http://msdn.microsoft.com/en-us/library/bb398998(v=vs.90).aspx
It uses <asp:ScriptManager> control to call the service reference. You can’t
use this in SharePoint custom web parts because ScriptManager is already
included in SharePoint. You will get a runtime error.
I use bellow steps to consume the service.
Open the ascx file of the Visual Web Part. Add <asp:ScriptManagerProxy> control and set the service reference path and
the script reference path as follows:
<asp:ScriptManagerProxy runat="server" ID="scriptManager">
<Services>
<asp:ServiceReference path="/_vti_bin/MyServices/SuggestionService.asmx" />
</Services>
<Scripts>
<asp:ScriptReference Path="/_layouts/MyServices/Suggestions.js" />
</Scripts>
</asp:ScriptManagerProxy>
I have deployed the custom web service at the following
location: /_vti_bin/MyServices/SuggestionService.asmx
And I have added required JavaScript methods at the
following location: /_layouts/MyServices/Suggestions.js
I’m calling the web service method at the onkeyup event of
the input control.
<input type="text" id="fname" onkeyup="GetCompletionList()">
<div id="Results"></div>
GetCompletionList() is the JavaScript method added at the
Suggestions.js file.
The result will be display at the div.
Below is the Suggestions.js file:
var myProxy;
//
Initializes global and proxy default variables.
function pageLoad() {
//
Instantiate the service proxy.
myProxy = new Search.SuggestionService();
// Set
the default call back functions.
myProxy.set_defaultSucceededCallback(SucceededCallback);
myProxy.set_defaultFailedCallback(FailedCallback);
}
//
Processes at the onKeyUp and calls the service GetCompletionList method.
function GetCompletionList() {
var completionList = myProxy.GetCompletionList();
}
//
Callback function that
//
processes the service return value.
function SucceededCallback(result) {
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result;
}
//
Callback function invoked when a call to
//
the service methods fails.
function FailedCallback(error, userContext, methodName) {
if (error !== null) {
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = "An error occurred: " +
error.get_message();
}
}
new Search.SuggestionService() is the name of the class where WebMethod is
defined.
namespace Search
{
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[WebService(Namespace = "http://tempuri.org/")]
[System.Web.Script.Services.ScriptService]
public class SuggestionService : WebService
{
[WebMethod]
public string GetCompletionList()
{
return "Results";
}
}
}
Now on onkeyup event of the input control, the result will be
displayed in the div control at the end.
No comments:
Post a Comment