2012-12-12 209 views
0

我有一個人們輸入他們的客戶的表單。Javascript/Ajax/Json:發送對象和數組

此表單允許用戶添加儘可能多的電話號碼,電子郵件和地址。

電話和電子郵件的每個添加的行都有類型和數據字段(phone_type, phone_data)而Address的每行的類型,街道,城市,州和郵政編碼爲(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頁面,我該如何獲取這些值呢?

+0

由PHONE_TYPE []的方法是不是一個選擇標記。也許這導致'未定義'異常 –

+0

你是什麼意思phone_type []不是一個選擇標籤?這是一個輸入。這是一個下拉菜單。 –

回答

3

序列化表單...使用Ajax data到發送的序列化數據到服務器...

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

這裏是documentaiotn已經熟悉的例子...

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

,並搶在你的PHP中的數據(如果您正在使用AJAX方式爲post)

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

如果ajax type : GET

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

與此答案類似http://stackoverflow.com/questions/2019608/pass-entire-form-as-data-in-jquery-ajax-function –

+0

如果這是一個答案..你發佈它作爲答案。 ...不作爲評論....如果你想張貼這個評論,你可以使用添加評論的問題... – bipen

+0

如果我發送數據的方式,我將如何去抓住數據在PHP中它被髮送到的頁面? –

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"]; 
+0

感謝您對它進行總結。你也幫助我認識到更好的方式來發送阿賈克斯。還有一個問題。我有phone_type []和phone_data []'鏈接',這意味着我需要獲取彼此相鄰的數據,因爲它們是爲了一起。我如何知道在PHP中使用哪一個? –