2013-08-28 58 views
0

發送動態數據通常情況下,我們必須像一個Ajax請求:如何使用AJAX

$.ajax({ 
    type: 'GET', 
    url: "/biboundsoptimization", 
    data: { 
     objects: '2', 
    }, 
    success: function (data) { 
     console.log(data); 
     alert(data); 
    }, 
    error: function (data, status, er) { 
     alert("error: " + data + " status: " + status + " er:" + er); 
    } 
}); 

但我現在不知道在數據字段變量的數目。例如,當客戶端進入2的數據字段應該是這樣的:

data: { 
    objects1: value of objects1, 
    objects2: value of objects2, 
}, 

如果客戶端進入3的數據字段應該是這樣的:

data: { 
    objects1: value of objects1, 
    objects2: value of objects2, 
    objects3: value of objects3, 
}, 

Ajax請求之前,所述客戶端具有已將每個對象的值輸入到不同的輸入字段中。但是我不知道這個數字,直到他進入它。所以我不能像上面那樣寫。很明顯,需要循環遍歷客戶端提供的循環數來獲取所有對象。我試圖類似:

for (int i = 1; i < clientValue; i++) { 
    'objects' + i: $('#objects' + i).val(), 
} 

但它不起作用。從語法上來說這是錯誤的。任何人都可以幫助我嗎?謝謝!

+0

你得到什麼錯誤?你在clientValue中有一個有效的值嗎? – Nitesh

+1

爲什麼不把所有的值放入數組中,然後將數組傳遞給你的ajax調用? – DiMono

回答

1

您可以動態創建一個包含所有類似的對象的對象:

var dataToPost = {}; 

for(int i = 1; i < clientValue; i++){ 
    dataToPost['objects' + i] = $('#objects' + i).val(); 
} 

然後通過在Ajax調用這樣

data: dataToPost, 
2

嘗試使用$。每個jQuery函數

var data = {}; 
$('#objects input').each(function(){ 
    data.push(this.value); 
}); 
+0

它不會創建一個對象,這不是OP詢問的對象。 – zsong

0
var objects = []; 

for(int i = 1; i < clientValue; i++){ 
     objects[i]: $('#objects' + i).val(), 
} 
0

add類太所有的輸入,並使用$。每個功能

<input id="object1" class="object" /> 
<input id="object2" class="object" /> 
var data = {}; 
var id; 
$('.object').each(function(){ 
    id = $(this).attr('id'); 
    data[id] = $(this).val(); 
}); 
2

如果你的數據從一個表單來的..你可以使用jQuery的序列化功能,同時自動換一切,爲你。

 var formData = $('#yourform').serialize(); 

可以然後做一些像這樣的事情在你的Ajax請求

 var request = $.ajax({ 
      type: 'POST', 
      url: 'ajaxHandler.php', 
      cache: false, 
      data: formData, //all the data is automatically ready for you now 
      dataType: 'json' 
     });