Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

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

share|improve this question

2 Answers 2

up vote 2 down vote accepted
<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).

share|improve this answer
    
This doesn't look like an answer to the question. Could you improve that a little? –  Benny Skogberg MCSA Apr 9 '13 at 9:44
1  
Script mark-up was hidden. I have edited so the answer makes more sense now. –  SPDoctor Apr 10 '13 at 10:27
    
@SPDoctor - now I understand what he was meaning. Note to self - next time an answer does not make sense, try to edit it and see if it is missing a piece. –  SPArchaeologist Apr 10 '13 at 11:32
    
(also +1 since now I understand the answer) –  SPArchaeologist Apr 10 '13 at 11:38
    
@SPArchaeologist ... and note to posters - check the rendered view looks okay before posting :-) –  SPDoctor Apr 10 '13 at 13:19

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.