2013-05-17 75 views
0

我試圖通過JSON將HTML選擇元素中的所有選項標記的id和文本值發送給AJAX。通過HTML選擇元素循環並通過JSON發送內容到AJAX

我有一個名爲「myObject」的對象服務器端,具有2個屬性:objId和objName。我需要在發送之前將數據包裹在這個對象中。

我試過2種不同的數據形成方式,但都失敗了。

我想我可能會錯誤地形成陣列。

這裏有兩種方法:

此拋出了一個「參數不夠」的錯誤

var data = { 
     myObect: $("#mySelectBox option").each(function (i) { 
      return { objId: i.id, objName: i.text() } 
     }) 
    }; 

這一個動作從服務器...我猜手段我是一個空的異常錯誤發送一個空的對象?

var data = { 
     myObect: $.map($("#mySelectBox option"), function (i) { 
      return { objId: i.id, objName: i.text() } 
     }) 
    }; 

任何幫助?謝謝!

+1

你可以使用'$ .serializeArray()':http://api.jquery.com/serializeArray/ – m90

回答

2

試試這個:

var data = { 
    myObect: $("#mySelectBox option").map(function() { 
     return { 
      objId: this.id, 
      objName: $(this).text() 
     } 
    }) 
}; 
+1

http://jsfiddle.net/frmN6/ – jantimon

+0

這將返回一個JSON/JavaScript的錯誤:對WrappedNative原型對象的非法操作 – SkyeBoniwell

+0

@ 999cm999:似乎工作給我..看到這個.. http://jsfiddle.net/Pb2p6/1/ –

1

首先,確保你的數據的關鍵,如果您複製從你的代碼示例...這是寫myObect :)

然後,jQuery的循環傭工(mapeach)對着幹原始DOM元素,而不是jQuery元素,所以你的i.text()可能無法正常工作。包裹它:$(i).text()

作爲最後一點,是的,使用map,因爲它返回一個回調返回數組。 each不會修改jQuery集合。