2015-12-06 2 views
12

Verwenden von parse.com und dem JavaScript SDK. Der Code sollte es einem Nutzer ermöglichen, sich zu registrieren und ein Profilbild hochzuladen.Benutzer kann Profilbild beim Anmeldeprozess nicht hochladen (Parse.com/JS SDK)

aktualisiert, das ist der Code, den ich, dass bin mit einen Fehler zurückgibt, wenn ein Benutzer die Konsolenmeldung is Uncaught TypeError: Cannot read property 'length' of undefined

> $('#SignUp').click(function(e) { 
>  UserSignUp(); }); 
> 
> 
> function UserSignUp() { 
> 
>  var user = new Parse.User(); 
>  userFirstname = $('#firstnamesu').val(); 
>  userLastname = $('#lastnamesu').val(); 
>  userUsername = $('#usernamesu').val(); 
>  userGender = $('#gendersu').val(); 
>  Email = $('#emailsu').val(); 
>  PWP = $('#passwordsu').val(); 
> 
>  user.set("FirstName", userFirstname); 
>  user.set("LastName", userLastname); 
>  user.set("username", userUsername); 
>  user.set("gender", userGender); 
>  user.set("email", Email); 
>  user.set("password", PWP); 
> 
> 
>  var fileUploadControl = $("#pic")[0]; if (fileUploadControl.files.length > 0) { var file = 
> fileUploadControl.files[0]; var name = "photo.png"; 
> 
> var parseFile = new Parse.File(name, file); 
> 
> //put this inside if { parseFile.save().then(function() { // 
> The file has been saved to Parse. }, function(error) { // The 
> file either could not be read, or could not be saved to Parse. 
>  }); 
> 
>  // Be sure of ur parameters name 
>  // prod is extend of my class in parse from this: var prod = new products(); 
>  user.set("ProfilePic", parseFile); 
>  user.save(); } ////////////Runs parse after the SignUp button has been clicked by the user//////////////////// 
> 
> $('#SignUp').click(function(e) { 
>  UserSignUp(); }); 
> 
>  user.signUp(null, { 
>   success: function(user) { 
>    if (!user.existed()) { 
>     window.location.href = "user_home.html"; 
>    } else { 
>     alert("NO WAY BUDDY"); 
>    } 
>   }, 
>   error: function(user, error) { 
> 
>   } 
>  }); 
+0

Es ist unklar, wo der "Uncaught TypeError" auftritt. Geschieht dies, wenn Sie die Länge der Dateien oder beim Speichern überprüfen? Können Sie ein Problem mit einem vollständigeren Beispiel Ihres Problems erläutern? – jjbskir

+0

Es sieht so aus, als ob Sie dem Beispiel im [JS Guide] (https://parse.com/docs/js/guide#files) ziemlich genau folgen. Ich sehe '.length' nur an einer Stelle in deinem Code, und so scheint es, als ob jQuery deine' input' nicht finden kann. Wenn Sie '$ (" # pic ") [0]' in Ihrer Konsole eingeben, gibt es Ihre Eingabe zurück? – adamdport

+0

@adamdport es gibt Ich habe mein Codebeispiel oben aktualisiert, um zu zeigen, was ich gerade benutze. Danke für das Betrachten! – Dano007

Antwort

4

Ich konnte meine eigene Frage mit dem folgenden Code beantworten. Im Grunde ging es darum, den Code in eine logischere Reihenfolge umzuwandeln, die ihn löste. Das Problem wurde nicht durch ein anderes Thema, das ich hier hatte, das die Dinge noch verwirrender machte, nicht geholfen. Issue with parse.com user signup not working

$('#SignUp').click(function(e) { 

    UserSignUp(); 
}); 


function UserSignUp() { 

     var fileUploadControl = $("#pic")[0]; 
    if (fileUploadControl.files.length > 0) { 
     var file = fileUploadControl.files[0]; 
     var name = "photo.png"; 


    var user = new Parse.User(); 

    var parseFile = new Parse.File(name, file); 
    userFirstname = $('#firstnamesu').val(); 
    userLastname = $('#lastnamesu').val(); 
    userUsername = $('#usernamesu').val(); 
    userGender = $('#gendersu').val(); 
    Email = $('#emailsu').val(); 
    PWP = $('#passwordsu').val(); 


    user.set("ProfilePic", parseFile); 
    user.set("FirstName", userFirstname); 
    user.set("LastName", userLastname); 
    user.set("username", userUsername); 
    user.set("gender", userGender); 
    user.set("email", Email); 
    user.set("password", PWP); 


var uri = encodeURI('http://XXXX.com/XXXX.html'); 

    user.signUp(null, { 
    success: function(user) { 

     if (!user.existed()) { 
       window.location.href = uri; 
      } 

    }, 
    error: function(user, error) { 
     // Show the error message somewhere and let the user try again. 

    } 
    }); 


}; 
} 
+0

Können Sie genau angeben, was sich geändert hat und warum das Problem passiert ist, um anderen in einer ähnlichen Situation zu helfen? – adamdport

0

Erster Vorschlag anzumelden versucht, und es wird Ihren Code ein bisschen mehr machen langwierig, aber es zeigt Ihnen, wo der Fehler auftritt.

function ifUndeforNull(val){ 
var ret = false; 
try{ 
    if((val == undefined)|| (val==null)){ 
    ret = true; 
    } 
    }catch(ex){ 
    console.log("Error:"+ex); 
    } 
return ret; 
} 

also dann überprüfen Sie, ob Ihre Werte nicht definiert oder Null sind.

wrapping die Gesamtheit in einem Versuch {} catch {} mit Protokollierung würde auch helfen.

Schließlich würde ich die Variablen wie userFirstName mit var deklarieren, wie manchmal Browser lästig nicht standard sein können, wenn das nicht angegeben ist.

Verwandte Themen