2015-06-02 44 views
0

我使用在parse.com上創建的數據庫在本地測試一些函數,並且函數完全按照預期運行。我現在正在嘗試將這些函數放在雲代碼上,以減少發送到解析的請求數量,並在雲代碼而不是本地運行查詢。無論出於何種原因,當我將它們轉換爲雲代碼時,我無法讓這些函數正常工作。另外,如何在HTML中創建一個可以在雲代碼中運行功能的按鈕?Parse.com將雲代碼添加到html按鈕

雲代碼之前,我的HTML按鈕是這樣的:

<button type="button" onclick="authenticate()">Log-In</button> 

我將如何創建雲代碼按鈕,看起來像這樣:

Parse.Cloud.define("authenticate()", function(request, response) { 
    var myname = document.getElementById("username").value; 
    var mypass = document.getElementById("psswd").value; 

    Parse.User.logIn(myname, mypass, { 
     success: function(user) { 
      // Do stuff after successful login. 
      if(myname == "test1" || myname == "test2"){ 
       window.location.href="itSplash.html"; 
      } 
      else{ 
       window.location.href="ticketRequest.html"; 
      }   
     }, 
     error: function(user, error) { 
      // The login failed. Check error to see why. 
      alert("Failed to login: " + error.message); 
     } 
    }); 
}); 

澄清,如果語句只是指導如果用戶名匹配test1或test2,則登錄到它;如果其他任何人匹配ticketRequest,則登錄到它。我們爲不同的用戶提供了單獨的頁面。此外,如果將該函數創建爲普通函數authenticate(),則該函數將在本地工作。當我將它轉換爲雲代碼時,如上所示,它不會工作。我在裏面創建了一個帶有Parse.Cloud.run調用的獨立函數名稱runAuthenticate(),它不會在那裏工作。我得到的只是一個錯誤,說定義不能在該對象上使用。任何幫助?

+0

您是否檢查過錯誤日誌,看看它告訴您的是未定義的,並且您是否試圖從curl運行雲功能? – Wain

+0

我在調試器模式下運行代碼。從我可以告訴它甚至不會運行任何功能,所以一切都還沒有定義。在它運行任何東西之前,它會在Parse.Cloud.define部分拋出一個錯誤,指出沿着「定義不能用在這個對象上」的東西。我測試了Parse.com上提供的示例hello world雲代碼,它工作正常,但有關上面的代碼不起作用。我從字面上複製並粘貼從我用來在本地運行它的js文件。 –

回答

2

你可以鏈接HTML按鈕與雲代碼函數通過使用Parse.Cloud.run。

看看Parse Cloud代碼 documentations

這是如何從JavaScript調用雲代碼。

Parse.Cloud.run('hello', {}, { 
    success: function(result) { 
     // result is 'Hello world!' 
    }, 
    error: function(error) { 
     // Error while running cloud code 
    } 
}); 

正如你寫,你可以嘗試調用JavaScript方法的onclick上的HTML按鈕,然後調用Parse.Cloud.run方法。

0

首先,您無法訪問documentwindow雲代碼,因此您需要重新考慮您來自哪裏。

此外,將用戶詳細信息發送到雲代碼並不合適,您應該使用SDK在網頁上登錄,然後使用SDK觸發雲代碼,然後發送用戶和授權細節。

因此,您的authenticate函數在雲代碼中的整個前提並不真正起作用。

這並不意味着你不應該使用雲代碼,它只是你不應該爲此使用它。你談論製作查詢,但你實際上沒有任何代碼顯示 - 但這種事情更可能移動到雲代碼...

+0

我所尋求的幫助/建議更多的是爲什麼我設置雲代碼的方式會導致它無法工作。文檔/窗口訪問是否導致錯誤發生?你是對的,因爲函數中沒有查詢。我有幾個其他功能,我沒有列出使用查詢。這些要複雜得多,所以我想在嘗試使用這些函數之前嘗試使用這個更簡單的函數。另外,我仍然不知道如何在HTML按鈕上運行雲代碼。如果我可以得到這個不顯示錯誤,並學習如何使用Parse.Cloud.run在一個很好的HTML按鈕, –

+0

此外,感謝在文檔和窗口的輸入。我很猶豫是否將這個功能添加到雲代碼中,因爲它不會提高性能(即時猜測)。我只想看看我是否能夠成功地在雲代碼中使用我的一個簡單函數,但是我甚至無法在發生錯誤之前加載頁面。 –

+0

在函數名中有'()'可能是個問題。然後是'文檔'和'窗口'是不確定的,所以你會得到錯誤。解析有一個錯誤日誌,你可以看,它會告訴你的問題。 – Wain