AJAX: A szerver 500 állapotgal válaszolt (belső kiszolgáló hiba)

Vizuális webrészt fejlesztek, és igény szerint próbálok felsorolni néhány elemet . Ezt szem előtt tartva hoztam létre egy CommentFetchSvc.asmx nevű webszolgáltatást, és hozzáadtam a következő kódot:

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

Létrehoztam és webszolgáltatást küldött a következőben: _layouts/15/Load5MoreComments. Amikor megadom a WebService URL-jét, sikeresen betöltődik, és láthatom a módszereimet: webszolgáltatás

akkor a következő kóddal próbálom felhívni a ReadComments oldalt ajaxból:

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

DE A KÖVETKEZŐ HIBÁT KÉPEZEM Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Bár amikor a ReadComments gombra kattintok link a WebService-ben a böngészőből tökéletesen működik, és amikor kitöltöm a pagenum paramétert, megjeleníti az adataimat. De az AJAX nem fogja meghívni a módszert. webszolgáltatás

Amikor belépek a 1 in my pagenum parameter: írja ide a kép leírását

Kérjük, SEGÍTSEN.

Válasz

Ez SOAP szolgáltatás, ezért próbáljon XML-t küldeni JSON helyett. Valami ilyesmi:

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

Megjegyzések

  • Köszönöm a választ, de a következő hibát kapom: error Request format is invalid: text/xml; charset=UTF-8. A következő sorra váltottam, hogy visszatérjen a XML [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
  • ' Frissítettem a válaszomat a végpont URL-jének megváltoztatásával és az `dataType` hozzáadásával. Próbáld meg velük. Ha még mindig nem működik ' t, akkor nem tudom, hogy ' nem tudom, mert így kell kezelni a szokásos Sharepoint SOAP szolgáltatásokat.
  • Új hibát kapok: Unable to handle request without a valid action parameter. Please supply a valid soap action.
  • Sajnálom, hogy rosszul olvastam a képernyőképet. A kéréshez hozzá kell adnia egy fejlécet SOAPAction is. Lásd szerkesztett válaszomat. Ezeket a dolgokat elmagyarázza, amikor a /_layouts/15/Load5MoreComments/CommentFetchSvc.asmx/ReadComments
  • címre megy. Köszönöm a megjegyzését, de új hibaüzenetet kapok: Server was unable to process request. ---&gt; Value cannot be null. Parameter name: String

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük