Question

When I try to run my javascript SP.JS file in a user control I get this error: Microsoft JScript runtime error: Unable to get value of the property 'isNullOrUndefined': object is null or undefined

The complete code is the following (Just copied it over from a book).

<script type="text/javascript" src="/_layouts/MicrosoftAjax.js" ></script>
<script type="text/javascript" src="/_layouts/SP.js" ></script>
<script language="javascript" type="text/javascript">

    ExecuteOrDelayUntilScriptLoaded(GetTitle, "sp.js");
    var site;
    var context;

    function GetTitle() {
        context = SP.ClientContext.get_current();

        site = context.get_web();
        context.load(site);

        context.executeQueryAsync(onQuerySucceeded, onQueryFailed);
    }
    function onQueryFailed(sender, args) {
        alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
    }
    function onQuerySucceeded(sender, args) {
        document.getElementById("Text1").value = site.get_title();
    }
    function Button1_onclick() {
        site.set_title(document.getElementById("Text1").value);
        site.update();

        context.load(site);

        context.executeQueryAsync(onTitleUpdate, onQueryFailed);
    }
    function onTitleUpdate(sender, args) {

    }

The function where the error occurs is...

SP.ClientContext.initializeBase(this,[SP.ScriptUtility.isNullOrUndefined(a)?SP.PageContextInfo.get_webServerRelativeUrl():a])};

Was it helpful?

Solution

<script type="text/ecmascript" src="/_layouts/SP.Core.JS"></script>

One of my friend tried to resolve a similar problem by adding the above line, you might be using a custom master page so the reference is missing (should be present in the standard master page).

OTHER TIPS

This is what I used to fix this problem:

<SharePoint:ScriptLink Name="MicrosoftAjax.js" runat="server" Defer="False" Localizable="false"/>
<SharePoint:ScriptLink Name="SP.core.js" runat="server" Defer="False" Localizable="false"/>
<SharePoint:ScriptLink Name="SP.js" runat="server" Defer="True" Localizable="false"/>

I added the above ScriptLinks in this order, and defered both the MicrosoftAjax.js and SP.Core.js includes, and delayed the SP.js. The SP.js file has dependencies in the preceding includes that requires it to be delayed.

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top