Sharepoint 2010 JQuery Ajax funktioniert nicht
Ich habe einen benutzerdefinierten webpart in Sharepoint und bin versucht, einige ajax, um das webpart.
Der gleiche code funktioniert in einem .net web-Anwendung, aber nicht in einem sharepoint-Webpart.
Den code aus dem .net web-Anwendung wird unten gezeigt (die aspx-Seite und der code-behind), welche gut funktioniert.:
ASPX-Datei
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//Add the page method call as an onclick handler for the div.
$("#Result").click(function () {
var loc = window.location.href;
$.ajax({
type: "POST",
url: loc + "/GetMessage",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
//Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
});
});
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="Result">Click here for the time.</div>
<asp:Button ID="btnClick" runat="server" Text="Button" />
</asp:Content>
.CS-Datei
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
namespace WebApplication3
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetMessage()
{
return "Codebehind method call...";
}
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
}
Den text "Klicken Sie hier für die Zeit" ändert sich zu "Code hinter den Aufruf der Methode" wenn ich drauf klicke, ohne dabei ein postback. Ich kann in den code Schritt, und dieser ruft die Methode GetMessage()
im code hinter innerhalb .net web-Anwendung.
Allerdings funktioniert dies nicht auf ein webpart in sharepoint 2010. Hat jemand irgendwelche Ideen?
this does not work on a webpart within sharepoint 2010.
Was ist das Verhalten/die Fehlermeldung?- Ich nicht, bekomme eine Fehlermeldung in irgendeiner form. Ich habe einen Haltepunkt gesetzt in der getMessage() Methode, die nie getroffen wird.
- Was ist der client-Seite? Fügen Sie einen error-handler, die auf Ihrem
$.ajax
nennen - Hallo Steve, ich habe gerade gebucht mit der gleichen Frage auf der sharepoint-Sektion von Stackoverflow und jemand hat vorgeschlagen, die Verwendung von webservices als Teil der Lösung . Schauen Sie sich diesen link und befolgen Sie die Frage von hier aus. sharepoint.stackexchange.com/questions/51865/...
- Vielleicht kann das helfen : stackoverflow.com/questions/5890202/.... Ich glaube nicht, dass dies ist ein Duplikat, aber es kann Ihnen helfen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weitere Möglichkeit ist die Erstellung einer SharePoint-Anwendungsseite. Hier ist dein code etwas modifiziert, um die Arbeit als Application-Seite (mit SharePoint-Masterseite Inhaltsbereiche und die AJAX-Punkte auf der Seite Anwendung:
Nächste änderung Ihrer service-Seite zu Erben von LayoutsPageBase statt WebPart:
}
Hoffe, diese Lösung funktioniert in Ihrer situation, wenn nicht, müssen Sie für den Aufruf eines web service aus einer web-Teil, werden Sie brauchen, um das web-service-außerhalb des Web-Teil. Das ist schön erklärt, auf http://dbremes.wordpress.com/2011/01/03/ajax-style-web-parts-in-sharepoint-the-easy-way/
Steve
Stellen Sie zunächst sicher, dass alle benötigten js-Dateien bereitgestellt werden und korrekt geladen. Suche die urls in den html-Quelltext und kopieren Sie Sie in einem neuen tab und sehen, ob Sie korrekt geladen.
Versuchen Sie auch, um alle JavaScript-Dateien auf dem server ( also kein 'https://ajax.googleapis.com/...' - urls). Ich hatte einmal Probleme mit der crossdomain-scripting Berechtigungen.
Könnte es auch ein Konflikt mit anderen JavaScript-Bibliotheken geladen werden. Für jQuery innerhalb einer SharePoint-Kontext normalerweise verwende ich die "noConflict" - option.
var $j = jQuery.noConflict();
$j(document).bereit(Funktion() {
.....
Ich möchte nur sagen, Sie haben POST, Sie können HOLEN Sie festgestellt, dass die harte Weise.