0

作業中のフォームでajaxを使用しようとしています。そのために、field_name = field_value&field_name=field_valueなどの投稿文字列を作成しています。

「未定義」がどこから来ているのか理解するのに苦労しています。このスクリーンショットを見てください

未定義の例

注意深く見ると、私が使用しているループが表示され、「email = Email&password=Password」ではなく「undefinedemail=Emailpassword=Password」が出力されます。

これが私が使用しているフォームとJavaScriptのストリップバージョンです:

<form id="signup_form" enctype="multipart/form-data" action="register.php" method="post">
<input name="email" type="text" value="Email"/>
<input name="password" type="text" value="Password"/>
<input name="email_confirm" type="text"  value="Confirm Email"/>
<input name="password_confirm" type="text" value="Confirm Password"/>
<input name="first_name" type="text" value="First Name"/>
<input name="country" type="text" value="Country"/>
<input name="birthday" type="text" value="Birthday DD/MM/YYYY"/>
<input name="last_name" type="text" value="Last Name"/>
<input name="city" type="text" value="City"/>
<input name="profession" type="text" value="Profession"/>
<input type="radio" name="gender" value="Male"><span>Male</span>
<input type="radio" name="gender" value="Female"><span>Female</span>
<input type="checkbox" name="user_type" value="User type" /><span>Checkbox</span>
<button type="submit" name="submit" class="" id="submit">Sign up</button>
</form>

javascript:

var post_string;
var input = document.forms["signup_form"].getElementsByTagName("input");
for(var i = 0; i < input.length; i++) { 

post_string += input[i].name + "=" + input[i].value;
if(i > 0 && i < input.length) { post_string += "&"; }

}

助けてくれてありがとう!

4

2 に答える 2

2

アキュムレータ変数を空の文字列で初期化するのを忘れたので、最初に評価したものをundefined. 使用する

var post_string = "";
于 2013-02-27T15:35:05.653 に答える
1

post_string空の文字列として宣言するのではなく、未定義の変数として宣言しているように見えますvar post_string = ""

つまり、 の最初のルックアップではpost_string、代わりに未定義の変数が返されます。

于 2013-02-27T15:35:13.377 に答える