我有一个推荐系统的表单,它有两个字段,即姓名和电子邮件。我还有一个“推荐另一个朋友”按钮,允许用户推荐另一个朋友(上限为11)。因此出现另一个名称和电子邮件字段现在我还有一个ajax函数$ .post,它只能用一个名字和电子邮件。如果有多个电子邮件条目(对于不同的用户可能不同),如何使ajax功能正常工作。我能想到的一件事是在函数addInput()之后使用数组,然后将其传递给ajax。有人能帮我解决这个问题吗?
<script>
var countBox =1;
var boxName = 0;
function addInput()
{
if(countBox<20)
{
var boxName="textBox"+countBox;
document.getElementById('responce').innerHTML+='<input name="name" size="50" class="resize" placeholder=" Name" required type="text" id="'+boxName+'" value="'+'" " />';
countBox += 1;
var boxName="textBox"+countBox;
document.getElementById('responce').innerHTML+='<br/><input name="email" size="50" class="resize" required placeholder=" Email Address" type="text" id="'+boxName+'" value="'+'" " /><br/><br/>';
countBox += 1;
}
else{
alert("Max number of referrals reached");
}
}
</script>
<script src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#emailForm').validate({
submitHandler: function() {
$.post("index1.php",{"name":$('#name').val(),"email":$('#email').val(),"userid": "<?php echo($user) ?>"},function(data) {
if(data == "Email address has already received a referral")
alert("Email address has already received a referral");
else {
count = 3 - parseInt(data)
var content = "You have "+count+" referrals left";
$('h4').html(content);
alert ("Referral sent");
}
});
}
});
});
</script>
答案 0 :(得分:3)
尝试在客户端创建json数组,并将其作为字符串传递给服务器,如下面的
[{"name" : "A","email" : "a@gmail.com"},{"name" : "B","email" : "b@gmail.com"},{"name" : "C","email" : "c@gmail.com"}]
在服务器端使用
json_decode($json)
会给你
array
0 =>
array
'name' => string 'A' (length=1)
'email' => string 'a@gmail.com' (length=11)
1 =>
array
'name' => string 'B' (length=1)
'email' => string 'b@gmail.com' (length=11)
2 =>
array
'name' => string 'C' (length=1)
'email' => string 'c@gmail.com' (length=11)
参考
答案 1 :(得分:0)
我认为您可以将所有名称附加到单个字符串中,并在中间添加分隔符 像
name=name1+","+name2;
email=email1+","+email2;
现在你可以通过ajax发送它。
另一方面,您可以使用split()
函数
我不熟悉PHP,请原谅我,如果我错了。但是这个逻辑在JSP中实际上对我有用
答案 2 :(得分:0)
你做
<input name="name[]">
和
<input name="email[]">
看起来你需要
<input type="hidden" name="userid" value="<?php echo($user) ?>">
然后,您可以使用
$.post("index1.php", $('#emailForm').serialize());
然后,在你的php中,你只需要遍历你的帖子变量:
for ($i=0; $i < count($_POST['email']); $i++) {
$email = $_POST['email'][$i];
$name = $_POST['name'][$i];
doStuff($name, $email);
}
答案 3 :(得分:0)
使用jQuery .serialize()
方法(http://api.jquery.com/serialize/)可能会更好。此外,您可能希望将输入命名为:
name="name[]"
和name="email[]"
。否则,如果你传递了所有发布的输入,你只会传递最后一个,因为他们的名字会相互覆盖。