2013-08-26 72 views
0

我想弄清楚爲什麼我無法訪問變量theHeaders以外的函數。我已經試過返回它,然後直接調用函數,我得到了定義的colListItem。我把它稱爲像這樣:SharePoint列表查詢JavaScript變量訪問問題

alert(onQuerySucceeded());alert(onQuerySucceeded(sender, args));

我得到一個未定義的每次。如何在theHeaders以外的功能訪問?

我不明白的是爲什麼我能得到它在onQuerySucceeded()功能的警報()消息的工作,但我不能這樣做doucment.write。我得到一個權限被拒絕的錯誤,如果我嘗試比警戒任何其他行動() 的JavaScript:

var siteUrl = '/sites/dev/'; 
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js"); 
function retrieveListItems() 
{ 
    var clientContext = new SP.ClientContext(siteUrl); 
    var oList = clientContext.get_web().get_lists().getByTitle('myList'); 

    var camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml("<Where><IsNotNull><FieldRef Name='Title' /></IsNotNull> </Where>"); 
    this.collListItem = oList.getItems(camlQuery); 
    clientContext.load(collListItem); 

    clientContext.executeQueryAsync(Function.createDelegate(this,  this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 

} 

function onQuerySucceeded(sender, args) 
{ 


    var listItemEnumerator = collListItem.getEnumerator(); 
    var theHeaders = ""; 
    while (listItemEnumerator.moveNext()) 
    { 
     var oListItem = listItemEnumerator.get_current(); 
     theHeaders = theHeaders + oListItem.get_item('Title'); 


    } 
    alert(theHeaders); 


} 
function onQueryFailed(sender, args) 
{ 
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 
+0

它適合我。你使用哪種瀏覽器? –

+0

Internet Explorer。你有document.write工作,或者你訪問函數外的變量「theHeaders」? –

+0

是的。我把document.write放在警報的地方,它工作。嘗試放置html標籤並在標籤中顯示標題值。 –

回答

0

如果你聲明你的文件的頂部(在這裏你聲明SITEURL)的變量,你從內取出聲明你的功能,你應該能夠在功能之外訪問它。但是,這意味着你正在改變變量的範圍。如果你確定,它應該可以工作。

+0

最終目標是將結果寫入頁面而不是顯示警報消息。每當我用doucment.write或其他東西切換警報消息時,我都會遇到權限錯誤。 –

+0

它是否與console.log()一起使用?警報/控制檯上實際打印的是什麼? –

+0

標題欄的內容以「OneTwoThreeFourFive」這樣的字符串形式顯示(列值爲一,二,三,四,五) –

0

請勿使用document.write,因爲它會破壞您的頁面內容。將您的結果注入div更好。喜歡的東西:

document.querySelector('#myDiv').innerHTML = theHeaders 

順便說一句,你不能使用alert(onQuerySucceeded());因爲onQuerySucceeded()retrieveListItems()異步調用,所以它不能返回一個值。