AJAX: serverul a răspuns cu o stare de 500 (Eroare internă a serverului)

Dezvolt o parte web vizuală și încerc să listez elemente la cerere . Având în vedere acest lucru, am creat un serviciu Web numit CommentFetchSvc.asmx și am adăugat următorul cod:

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; } } 

Am creat și a trimis WebService în _layouts/15/Load5MoreComments. Când introduc URL-ul WebService, acesta se încarcă cu succes și pot vedea metodele mele: webservice

apoi încerc să apelez ReadComments din ajax cu următorul cod:

<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> 

DAR OBȚIN URMĂTOarea EROARE Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Deși când dau clic pe ReadComments link-ul din WebService de la browser funcționează perfect și când completez parametrul pagenum îmi arată datele. Dar AJAX nu a apelat metoda. webservice

Când introduc 1 in my pagenum parameter: introduceți descrierea imaginii aici

Vă rog să mă AJUTAȚI.

Răspundeți

Este un serviciu SOAP, așa că încercați să trimiteți XML în loc de JSON. Ceva de genul:

$.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); } }); 

Comentarii

  • Vă mulțumim pentru răspunsul dvs., dar primesc următoarea eroare: error Request format is invalid: text/xml; charset=UTF-8. Am schimbat linia următoare pentru a returna XML [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
  • Am ' mi-am actualizat răspunsul schimbând adresa URL a punctului final și adăugând `dataType`. Încearcă cu ei. Dacă încă nu funcționează ' t, atunci nu știu ', pentru că așa se poate face față serviciilor SOAP standard Sharepoint.
  • Am primit o nouă eroare: Unable to handle request without a valid action parameter. Please supply a valid soap action.
  • Ne pare rău că am citit greșit captura de ecran. De asemenea, trebuie să adăugați un antet SOAPAction la cererea dvs. Vezi răspunsul meu editat. Toate aceste lucruri sunt explicate când accesați /_layouts/15/Load5MoreComments/CommentFetchSvc.asmx/ReadComments
  • mulțumesc pentru comentariu, dar primesc din nou o nouă eroare: Server was unable to process request. ---&gt; Value cannot be null. Parameter name: String

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *