2014-10-25 2 views
0

Использование Parse и JavaScript SDK.`Uncaught TypeError: undefined не является ошибкой функции, пытающейся сохранить данные

Я не могу видеть, что не так с этой функцией, которая должна сохранять отредактированные данные на странице обратно в синтаксический анализ. Я получаю Uncaught TypeError: undefined is not a function где я пытаюсь сделать

profileSave.set("username", saveusername); 
profileSave.set("email", saveemail.toString); 
profileSave.set("gender", savegender.toString); 

Но не понимаю, почему?

// Saves the users profile information 
$('#save').click(function (e) { 
    ProfileSave(); 
}); 
/// 

function ProfileSave() { 

    var profileSave = Parse.Object.extend("_User"); 


    var saveusername = $('#username').val(); 
    var saveemail = $('#email').val(); 
    var savegender = $('#gender').val(); 

    profileSave.set("username", saveusername.toString); 
    profileSave.set("email", saveemail.toString); 
    profileSave.set("gender", savegender.toString); 

    profileSave.save(null, { 
     success: function(profileSave) { 
//success 
}, 
error: function(profileSave, error) { 
// Fail 

} 
});   

} 

Полный код

   <div class="container"> 
        <!--Data is stored in these divs but not they are not displayed to the user!--> 

        <div id="div_uname" style="display:none;"></div> 
        <div id="div_email" style="display:none;"></div> 
        <div id="div_gender" style="display:none;"></div> 
        <div id="profile_pic"></div> 

       </div> 

       <!--This is what the user sees. The id calls JS that enables the input field to be edited!--> 

       <!--Displays user profile information on the page!--> 

       <div class="container"> 

        <h4>General Features</h4> 
        <ul> 

         <li> 
          <input type="text" class="div_uname" id="username" value="" /> 
         </li> 
         <li> 
          <input type="text" class="div_email" id="email" value="" /> 
         </li> 
         <li> 
          <input type="text" class="div_gender" id="gender" value="" /> 
         </li> 

         <li> 
          <button class="button button-blue" id="save">Save Name</button> 

         </li> 

        </ul> 
       </div> 






       <!--This script displays the user profile data on the page and allows the user to update the details --> 
       <script type="text/javascript"> 
        Parse.initialize("xx", "xx"); 


         Parse.User.logIn("dave", "delvedia", { 
    success: function(user) { 
    console.log("Logged in!"); 
    } 
}); 

    // Makes sure the current user is selected// 

    // Pulls the user data from parse and stores in variables// 
    var user = Parse.User.current(); 
    user.fetch().then(function(fetchedUser) { 
     var username = fetchedUser.getUsername(); 
     var email = fetchedUser.getEmail(); 
     var gender = user.get("gender"); 
     var imgPaht = user.get("pic"); 


     // Outputs the data to the users view// 

     // Adds the contents of the variables into the html divs// 

     document.getElementById("div_uname").innerHTML = username; 
     $(".div_uname") 
     .val($("#div_uname").text()) 

     document.getElementById("div_email").innerHTML = email; 
     $(".div_email") 
     .val($("#div_email").text()) 

     document.getElementById("div_gender").innerHTML = gender; 
     $(".div_gender") 
     .val($("#div_gender").text()) 


     $('<img src="' + imgPaht + '">').load(function() { 
      $(this).width(400).height(400).appendTo('#profile_pic'); 
     }) 


    }, function(error) { 

    }); 




// Saves the users profile information 
$('#save').click(function (e) { 
    ProfileSave(); 
}); 
/// 

function ProfileSave() { 

    var profileSave = Parse.Object.extend("_User"); 


    var saveusername = $('#username').val(); 
    var saveemail = $('#email').val(); 
    var savegender = $('#gender').val(); 

    profileSave.set("username", saveusername.toString()); 
    profileSave.set("email", saveemail.toString()); 
    profileSave.set("gender", savegender.toString()); 

    profileSave.save(null, { 
     success: function(profileSave) { 
//success 
}, 
error: function(profileSave, error) { 
// Fail 

} 
});   

} 
</script> 
+0

@code Уникально вы хотите, чтобы дать пример в ответ, и я могу принять его? @ – Dano007

+0

@CodeUniquely ты ** уверен ** это причина? https://www.parse.com/docs/js_guide#objects-classes – Daedalus

+0

Не нужно вызывать '.toString()'. '.val()' всегда возвращает строки. – Barmar

ответ

1

Вы должны создать объект, на котором, чтобы вызвать множество. Таким образом, вы определяете переменную, которая расширяет объект, который вы заинтересованы.

var User = Parse.Object.extend("_User"); 

, а затем вы можете создать новый объект этого расширенного типа

var profileSave = new User(); 

и вы можете позвонить набор (ы) и получить (s)

profileSave.set("username", saveusername); 
profileSave.set("email", saveemail); 
profileSave.set("gender", savegender); 
+0

Большое спасибо, при сохранении назад, я должен указать пароль? ему не нравится, что это необязательно? – Dano007

+0

Извините, но я понятия не имею. Ваш код, похоже, не упоминает пароль, я не знаю, какие свойства существуют на любом из ваших объектов или что ожидает ваше приложение. Если ваше приложение нуждается в вас, чтобы отправить его, то вы должны, если вам не нужно отправлять его, то вы можете выбрать или нет, это зависит от вас действительно ... –

Смежные вопросы