AJAX: de server reageerde met een status van 500 (interne serverfout)

Ik ben een visueel webonderdeel aan het ontwikkelen en probeer een aantal lijstitems op aanvraag te maken . Met dit in gedachten heb ik een webservice gemaakt met de naam CommentFetchSvc.asmx en de volgende code toegevoegd:

public class CommentFetchSvc : System.Web.Services.WebService { public CommentFetchSvc() { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } public class BlogItem { public string Title { get; set; } public string Body { get; set; } } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public List<BlogItem> ReadComments(string pagenum) { List<BlogItem> blogList = new List<BlogItem>(); using (SPSite oSpSite = new SPSite("http://mysiteUrl")) { using (SPWeb oSpWeb = oSpSite.OpenWeb()) { SPList oList = oSpWeb.Lists["LageData"]; SPQuery oQuery = new SPQuery(); int pageNum = int.Parse(pagenum); // Number of rows to fetch oQuery.RowLimit = 5; // Start reading from 1 int intIndex = 1; do { SPListItemCollection collListItems = oList.GetItems(oQuery); // Check if this are the records to be returned if (intIndex == pageNum) { // Read items for the specific range foreach (SPListItem oListItem in collListItems) { BlogItem item = new BlogItem(); item.Title = oListItem["Title"].ToString(); item.Body = oListItem["ID"].ToString(); blogList.Add(item); } break; } oQuery.ListItemCollectionPosition = collListItems.ListItemCollectionPosition; intIndex++; } while (oQuery.ListItemCollectionPosition != null); } } return blogList; } } 

Ik heb gemaakt en heeft WebService verzonden in _layouts/15/Load5MoreComments. Wanneer ik de url van WebService invoer, wordt deze met succes geladen en kan ik mijn methoden zien: webservice

dan probeer ik ReadComments vanuit ajax te bellen met de volgende code:

<asp:HiddenField Value="1" runat="server"></asp:HiddenField> 
<script type="text/javascript"> $(document).ready(LoadData()); function LoadData() { GetCommentItems(); } function GetCommentItems() { var pageTrack = $("input[id$="pageTrack"]").val(); $.ajax({ url: "/_layouts/15/Load5MoreComments/CommentFetchSvc.asmx/ReadComments", type: "POST", data: "{"pagenum":"" + pageTrack + ""}", contentType: "application/json;", dataType: "json", success: function (msg) { AppendItems(msg); var newPageTrack = $("input[id$="pageTrack"]").val(); $("input[id$="pageTrack"]").val(parseInt(newPageTrack) + 1); }, error: function (xhr, msg) { console.log(msg + "\n" + xhr.responseText); } }); function AppendItems(data) { $.each(data.d, function (i, item) { var title = item.Title; var body = item.Body; html = "<li><b>" + title + "</b></li>"; html += body; html += "<hr/>"; $("#resultarea").append($(html)); }); } } </script> <p> <asp:HyperLink NavigateUrl="javascript:void(0);" onClick="GetCommentItems();" runat="server">View next five comments..</asp:HyperLink> </p> 

MAAR IK KRIJG DE VOLGENDE FOUT Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Hoewel wanneer ik op ReadComments klik link in mijn WebService vanuit de browser werkt het perfect en als ik de paginaparameter vul, worden mijn gegevens weergegeven. Maar AJAX “roept de methode niet aan. webservice

Wanneer ik 1 in my pagenum parameter: voer de beschrijving van de afbeelding hier in

HELP ME.

Answer

Het is een SOAP-service, dus probeer XML te verzenden in plaats van JSON. Iets als:

$.ajax({ url: "/_layouts/15/Load5MoreComments/CommentFetchSvc.asmx", type: "POST", dataType: "xml", beforeSend: function(xhr) { xhr.setRequestHeader("SOAPAction", "http://tempuri.org/ReadComments"); }, data: "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ReadComments xmlns="http://tempuri.org"><pagenum>"+pageTrack+"</pagenum></ReadComments></soap:Body></soap:Envelope>", contentType: "text/xml; charset=utf-8", success: function (msg) { console.log(msg) }, error: function (xhr, msg) { console.log(msg + "\n" + xhr.responseText); } }); 

Reacties

  • Bedankt voor je antwoord, maar ik krijg de volgende foutmelding: error Request format is invalid: text/xml; charset=UTF-8. Ik veranderde naar de volgende regel om XML [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
  • Ik ' heb mijn antwoord bijgewerkt door de eindpunt-url te wijzigen en door `dataType` toe te voegen. Probeer het met hen. Als het nog steeds niet ' niet werkt, dan weet ik het ' niet, want dit is hoe om te gaan met de standaard Sharepoint SOAP-services.
  • Ik krijg een nieuwe foutmelding: Unable to handle request without a valid action parameter. Please supply a valid soap action.
  • Sorry dat ik de schermopname verkeerd heb gelezen. U moet ook een koptekst SOAPAction aan uw verzoek toevoegen. Zie mijn bewerkte antwoord. Al deze dingen worden uitgelegd wanneer je naar /_layouts/15/Load5MoreComments/CommentFetchSvc.asmx/ReadComments gaat
  • bedankt voor je reactie, maar ik krijg weer een nieuwe foutmelding: Server was unable to process request. ---&gt; Value cannot be null. Parameter name: String

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *