2015-12-06 19 views
12

parse.comとJavaScript SDKを使用しています。このコードは、ユーザーがサインアップしてプロフィール画像をアップロードできるようにする必要があります。更新サインアッププロセス(Parse.com/JS SDK)でプロフィール画像をアップロードできません

が、これは私がコンソールメッセージ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

"Uncaught TypeError"がどこで発生しているかは不明です。あなたがファイルの長さをチェックしているときや保存しているときに起こっていますか? jsfiddleに問題のより完全な例を提供できますか? – jjbskir

+0

あなたは[JSガイド](https://parse.com/docs/js/guide#files)の例にかなり近づいているようです。私は '.length'をコード内の1つの場所にしか見ないので、jQueryがあなたの' input'を見つけることができないようです。あなたのコンソールに '$("#pic ")[0]'とタイプすると、あなたの入力が返されますか? – adamdport

+0

@adamdportそれは返す私が今使っていることを示すために上のコード例を更新しました。これを見てくれてありがとう! – Dano007

答えて

4

次のコードを使用して私自身の質問に答えることができました。基本的には、コードをそれを解決するより論理的な順序にリファクタリングするケースでした。この問題は私がここにいた別の問題によって助けられなかった。 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

似たような状況で、変更されたものと他の人を助けるために問題が発生した理由を正確に指定できますか? – adamdport

0

最初の提案をユーザーにサインアップしようとしたときにそれがエラーを返して使用していて、あなたのコードはもう少し作るために起こっているコードです長いですが、エラーが発生している場所が表示されます。

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

したがって、valが未定義かnullかを確認します。

if(ifUndeforNull(userFirstname)){ 
    console.log('User First Name Null or Undefined'); 
} 

ログ全体をtry {} catch {}でラップすることも役立ちます。

最後に、userFirstNameなどの変数をvarと宣言します。これは、ブラウザが指定されていないときにブラウザが気にせず非標準になることがあるためです。

関連する問題