0

我正在尝试将 ajax 与我正在处理的表单一起使用,为此我正在构建一个帖子字符串,如下所示: field_name=field_value&field_name=field_value 等等..

我无法弄清楚“未定义”的来源。看看这个截图

未定义的例子

如果你仔细看,你会看到我正在使用的循环,输出“undefinedemail=Emailpassword=Password”而不是“email=Email&password=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 回答