2013-05-09 3 views
1

J'ai fait des recherches assez approfondies et tout le monde dit que le code que j'ai ci-dessous devrait charger SP.js, mais je n'arrive pas à le charger.Pourquoi SP.js ne se charge pas?

Debugging je reçois:

NewForm.aspx, line 1667 character 5 
SCRIPT5009: 'PeoplePicker' is undefined 

et ne voient pas SP.JS sous sources de vue.

<SharePoint:ScriptLink Name="SP.js" runat="server" OnDemand="true" 
    Localizable="false" /> 
<script type="text/javascript"> 

ExecuteOrDelayUntilScriptLoaded(SetWebUserData(), "SP.js"); 

function SetWebUserData() { 
    var pplPicker = new PeoplePicker(); 
    // Set the parent tag id of the people the picker. 
    pplPicker.SetParentTagId('Main_x0020_Contact'); 
    pplPicker.SetLoggedInUser(); 
    }; 
</script> 

Toute assistance grandement appréciée.

+0

'SP.js' se charge bien. L'erreur indique que vous n'avez pas défini la classe 'PeoplePicker'. Si vous avez, alors il y a une erreur avec cette classe ou le script dans lequel elle est définie ne se charge pas correctement. –

+0

J'ai défini PeoplePicker dans le fichier SP.js et même lorsque je supprime tout le code et que je fais juste de PeoplePicker une fonction d'alerte, je ne reçois aucune alerte. Je ne crois pas que sp.js se charge bien. – user2366475

+0

Si j'inclue PeoplePicker dans le code source, j'obtiens toujours une erreur – user2366475

Répondre

5

Vous utilisez ExecuteOrDelayUntilScriptLoaded incorrect. Vous ne devez passer le nom de la fonction, il devrait ressembler à ceci:

ExecuteOrDelayUntilScriptLoaded(SetWebUserData, "sp.js"); 

Sans ()

1

Le premier paramètre de ExecuteOrDelayUntilScriptLoaded doit être une fonction . Cette fonction est appelée après le chargement du fichier de script demandé.

<SharePoint:ScriptLink Name="SP.js" runat="server" OnDemand="true" 
    Localizable="false" /> 
<script type="text/javascript"> 

ExecuteOrDelayUntilScriptLoaded(SetWebUserData, "SP.js"); 

function SetWebUserData() { 
    var pplPicker = new PeoplePicker(); 
    // Set the parent tag id of the people the picker. 
    pplPicker.SetParentTagId('Main_x0020_Contact'); 
    pplPicker.SetLoggedInUser(); 
    }; 
</script> 

Avec(), vous appel fonction. Cela signifie que votre erreur était de passer le résultat de votre fonction en tant que paramètre, pas la fonction elle-même.

Exemple pour une meilleure compréhension:

function helloFunction() { 
    return 42; 
} 

var myHelloFunction = helloFunction; // Function is passed 
var myHelloFunctionResult = helloFunction(); // Result of your function (42) is passed 
0

Je sais qu'il est un peu en retard, mais je pense que cela est la réponse que vous recherchez.

SP.SOD.executeFunc('sp.js', 'SP.ClientContext',function(){ 
    var pplPicker = new PeoplePicker(); 
    // Set the parent tag id of the people the picker. 
    pplPicker.SetParentTagId('Main_x0020_Contact'); 
    pplPicker.SetLoggedInUser(); 
};