2013-12-11 6 views
0

У меня есть форма для реферальной системы, которая имеет два поля, а именно имя и адрес электронной почты. У меня также есть кнопка «refer another friend», которая позволяет пользователю ссылаться на другого друга (ограничение до 11). Появится другое имя и поле электронной почты. Теперь у меня также есть функция ajax $ .post, которая предназначена только для одного имени и электронной почты. Как сделать функцию ajax работоспособной, если есть несколько записей электронной почты (которые могут отличаться для разных пользователей). Одна вещь, о которой я могу думать, - использовать массив после функции addInput(), а затем передать его в ajax. Может кто-нибудь помочь мне понять эту штуку?Как передать массив через 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="&nbsp;&nbsp;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="&nbsp;&nbsp;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> 

ответ

3

попытка сделать JSon массив на стороне клиента и передать его в виде строки на сервере, как показано ниже одной

[{"name" : "A","email" : "[email protected]"},{"name" : "B","email" : "[email protected]"},{"name" : "C","email" : "[email protected]"}] 

об использовании на стороне сервера

json_decode($json) 

даст вам

array 
    0 => 
    array 
     'name' => string 'A' (length=1) 
     'email' => string '[email protected]' (length=11) 
    1 => 
    array 
     'name' => string 'B' (length=1) 
     'email' => string '[email protected]' (length=11) 
    2 => 
    array 
     'name' => string 'C' (length=1) 
     'email' => string '[email protected]' (length=11) 

ссылка

http://php.net/json_decode

0

Я думаю, вы можете добавить все имена в одну строку с разделителем в средней как

name=name1+","+name2; 
email=email1+","+email2; 

и теперь вы можете отправить его через AJAX.

и на другой стороне вы можете разбить его на массив с помощью функции split()

Я не знаком с PHP, так простите меня, если я ошибаюсь. Но эта логика на самом деле работает хорошо для меня в JSP

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); 
} 
0

Вы можете повезти с помощью метода JQuery .serialize() (http://api.jquery.com/serialize/). Кроме того, вы можете назвать свои входы следующим образом:

name="name[]" и name="email[]". В противном случае, если вы передадите все размещенные входы, вы пройдете только последний из них, так как их имена будут переписываться друг с другом.

Смежные вопросы