2015-11-16 60 views
0

我有一些標籤輸入,動態定義,我希望發佈相同數量的變量作爲標籤到以下ajax: 只有部分或全部$('#tag_x').val()將被定義定義可變數量的變量與ajax發佈

$.ajax({ 
    url:'/ajax/defineTags/', 
    type:'post', 
    data:{ 
     tag_1:$('#tag_1').val(), 
     tag_2:$('#tag_2').val(), 
     tag_3:$('#tag_3').val(), 
     tag_4:$('#tag_4').val(), 
     tag_x:$('#tag_x').val(), 
     tag_20:$('#tag_20').val() 
    } 
    }).always(function(response){ 
    console.log(response); 
    }); 

我的問題是,我使用序列化?這不是一個標準的形式。 如果是這樣,請解釋一下如何?我希望我已經說清楚了。

謝謝!

+1

以上代碼的哪些部分不起作用?您不需要序列化,因爲您已經有一個對象在數據參數下傳遞。在進行ajax調用之前,您可能需要進行一些驗證,以確定該字段是否已定義,並跳過該輸入或傳遞默認值。我會建議在這種情況下使用循環。 – scrappedcola

+0

我會一旦弄清楚如何。我嘗試了一些像定義= {x1:'tag_x1',x2:'tag_x2',...}但是打破了代碼 – phpmydev

回答

0

一個朋友建議這一點,它的工作原理治療:

for (var prop in response) { 
     if (prop.indexOf('tag_') >= 0) { // is a tag_ property 
     tagNum = prop.substring(4); 
     //~ console.log(tagNum); 
     hasValue = response[prop] !== ''; 
     if(response[prop] !== ''){ 
      //~ alert(tagNum+response[prop]); 
      $('#tags-select').append('<option value="'+tagNum+'">'+response[prop]+'</option>'); 
     } 
     } 
    } 

感謝您的幫助傢伙!

0

可以使用

var data = $('input[id^="tag_"]').serialize(); 

DEMO

添加數據序列化

var data = $('input[id^="tag"]').serialize(); 
var Add_Data = data+'&id='+$('#tags-id').text(); 

DEMO

用於更復雜的

var data = $('input[id^="tag"]').serialize(); 
$('span[id^="tags"]').each(function(){ 
    var ThisText = $(this).text(); 
    var ThisId = $(this).attr('id'); 
    var add_Data = ThisId+'='+ThisText; 
    data = data+'&'+ add_Data; 
}); 
$('div').text(data); 

DEMO

和AJAX使用

data: data 

東西,你應該知道.serialize()

的.serialize()方法創建標準的URL文本字符串編碼的 表示法。它可以作用於一個jQuery對象,該對象已經選擇了個別的 表單控件,例如,和:$(「input, textarea,select」).serialize();

和輸出應該是這樣的

單=單&多個=多&多個= Multiple3 &檢查= CHECK2 &無線電=收音機1

東西,你應該知道.serializeArray( )

.serializeArray()方法cr提供了一個JavaScript數組對象, 已準備好被編碼爲JSON字符串。它運行在一個jQuery 窗體和/或窗體控件的集合上。該控件可以是 幾種類型:

輸出

[{ 名: 「一個」, 值: 「1」},{ 名: 「B」, 值: 「2」 },{ 名: 「C」, 值: 「3」},{ 名: 「d」, 值: 「4」},{ 名稱: 「e」 的, 值: 「5」}]

+0

請原諒我的灰塵,我正在解決其他相關問題 - 我感謝您的幫助。 – phpmydev

+0

如何在序列化中包含更多數組元素?像id:$('#tags-id')。text(), – phpmydev

+0

@phpmydev對於延遲迴復感到抱歉...嘗試瞭解序列化的形狀,以便在演示中輸出結果(nothing1 = yes&nothing2 = no&nothing3 = Ok)所以添加其他值來序列化它應該是id = $('#tags-id')。text()..所以在你的情況下,你可以使用data +'&id ='+ $('#tags-id')。文本().... http://jsfiddle.net/mohamedyousef1980/vLjyw2ks/5/ –

0

您可以使用.serializeArray()

var data_arr = $('[id^=#tag_]').serializeArray(); 
$.ajax({ 
    url:'/ajax/defineTags/', 
    type:'post', 
    data:data_arr 
    }).always(function(response){ 
    console.log(response); 
    }); 
+0

謝謝,我會盡力現在 – phpmydev