2012-05-22 5 views
2

Действительно не знакомы с jQuery. В любом случае я могу передать данные формы в файл PHP с помощью jQuery?Передача переменных в файл PHP через jQuery

ФОРМА:

<div id="dialog-form" title="Fill in your details!"> 
    <form> 
<fieldset> 
    <label for="name">Name</label> 
    <input type="text" name="name" id="name"/> 
    <label for="email">Email</label> 
    <input type="text" name="email" id="email" value=""/> 
    <label for="phone">Phone</label> 
    <input type="phone" name="phone" id="phone" value=""/> 
</fieldset> 
    </form> 

Это всплывающее диалоговое окно с JQuery и получает представлен с:

$("#dialog-form").dialog({ 
    autoOpen: false, 
    height: 450, 
    width: 350, 
    modal: true, 
    buttons: { 
    "Sumbit": function() { 
    //VALIDATES FORM INFO, IF CORRECT 
     if (Valid) { 
     $.ajax({ 
      url: 'process-form.php', 
      success: function (response) { 
      //response is value returned from php 
      $("#dialog-success").dialog({ 
       modal: true, 
       buttons: { 
       Ok: function() { 
        $(this).dialog("close"); 
       } 
       } 
      }); 
      } 
     }); 
     $(this).dialog("close"); 
     } 
    } 
    } 
}); 

То, что я хочу сделать, это отправить данные формы, что пользователь вводит process-form.php, где он будет обработан и отправлен в виде электронной почты (что я могу сделать). Просто не уверен на стороне jQuery. Возможно ли это?

+2

возможно дубликат [JQuery POST данные формы] (http://stackoverflow.com/questions/5772839/jquery-post-form-data) и так много другие ... :-) –

+0

Пойдем, спасибо, ребята. ^ Сначала посмотрите на другие вопросы. Если я не очень разбираюсь в коде, то я не могу сказать, что это то, что мне нужно или нет. – user1410070

ответ

3

Вы можете использовать функцию .serialize()

$('yourform').serialize(); 

Docs for .serialize() here

Вы бы использовать его как это:

$.ajax({ 
    url: 'process-form.php', 
    data: $('form').serialize(), // **** added this line **** 
    success: function (response) { //response is value returned from php 
     $("#dialog-success").dialog({ 
      modal: true, 
      buttons: { 
       Ok: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    } 
}); 
2

Да, вы можете использовать метод JQuery .post(), который детализируется here

$.post("process-form.php", $("#dialog-form").serialize()); 
1

Учитывая ваш текущий код самый простой способ для сериализации формы в собственность данных:

[...] 
url: 'process-form.php', 
data: $('#dialog-form').serialize() 
0

Вы находитесь на правильном пути с $ .ajax, но вы должны фактически передать данные с которые вы еще не сделали. Вам лучше всего установить «тип». Теперь

$("#dialog-form").dialog({ 
     autoOpen: false, 
     height: 450, 
     width: 350, 
     modal: true, 
     buttons: { 
      "Sumbit": function() { 
       //VALIDATES FORM INFO, IF CORRECT 
       if (Valid) { 
        $.ajax({ 
         url: 'process-form.php', 
         type: "post", 
         data: { 
          name: $('[name=name]').val(), 
          email: $('[name=email]').val(), 
          phone: $('[name=phone]').val(), 
         }, 
         success: function (response) { //response is value returned from php 
          $("#dialog-success").dialog({ 
           modal: true, 
           buttons: { 
            Ok: function() { 
             $(this).dialog("close"); 
            } 
           } 
          }); 
         } 
        }); 
        $(this).dialog("close"); 
       } 

Эти переменные должны быть доступны в вашем PHP скрипт, как $ _POST [ 'имя'], $ _POST [ 'электронная почта'] и $ _POST [ 'телефон']

+0

Вы можете передать всю форму, используя [.serialize()] (http://api.jquery.com/serialize/) – ManseUK

0

Что точка для form если вы отправляете с ajax? О проблеме сейчас, получить входы от:

var fields = []; 
$("#dialog-form form fieldset > input").each(function() { 
    fields.push($(this)[0].value); 
}); 
... 
$.ajax({ 
    url: 'process-form.php', 
    data:fields 
... 
Смежные вопросы