Javascript / Ajax / Json:发送对象和数组

时间:2012-12-12 05:05:29

标签: javascript jquery ajax json

我有一个表格,让人们进入他们的客户。

此表单允许用户根据需要添加任意数量的电话号码,电子邮件和地址。

电话和电子邮件包含每个添加的行(phone_type, phone_data)的类型和数据字段,而地址包含每行(address_type, address_street, address_city, address_state, address_zip)的类型,街道,城市,州和邮政编码字段。

例如,当用户添加电话字段时,它会添加:

<input type="text" name="phone_type[]" />
<input type="text" name="phone_data[]" />

我需要通过Ajax将表单数据发送到PHP来处理和存储在数据库中。

我想过把它存放在一个对象中的数组中。

phone = new Object();
var phone.data = new Array(), 
phone.type = new Array();
$("input[name='phone_data[]']").each(function() {
  if($(this).val() != '') {
  phone.data.push($(this).val());
  phone.type.push($('select[name="phone_type[]"]').val());
})

这似乎不起作用。我是否正确接近这个?

另外,一旦我将它通过Ajax发送到PHP页面的对象,我该如何获取值?

3 个答案:

答案 0 :(得分:3)

序列化您的表单...使用ajax的data将序列化数据发送到服务器......

 data:$('#YourFORMID').serialize();

这是documentaiotn已经参考了这些例子......

http://api.jquery.com/jQuery.post/

并获取PHP中的数据(如果您使用ajax类型作为帖子)

 $data=$_POST['phone_data'];
 $type=$_POST['phone_type'];

如果ajax type : GET

 $data=$_GET['phone_data'];
 $type=$_GET['phone_type'];

答案 1 :(得分:1)

您是否正在尝试重新发明jQuery的serialize()

var frm = $("#myForm");
var values = frm.serialize();

//make Ajax call
$.post("someUrl", values, function(){} );

http://jsfiddle.net/BZcja/

答案 2 :(得分:1)

你绝对可以使用jQuery serialize()。在触发处理的事件中,您可以执行以下操作:

$.ajax({  
    type: "POST",  
    url: "your_php_processing_page.php",  
    data: $("#FormID").serialize(),  
    dataType: "json",  
    success: function(data){
        // do stuff here
    },  
    error: function() {  
        // do stuff here             
    }  
});

your_php_processing_page.php中,您可以获得如下值:

$phone_types = $_POST["phone_type"];
$phone_data = $_POST["phone_data"];