2014-05-15 48 views
1

我對Ajax非常陌生,但已經管理了下面的代碼,但無法理解我如何處理結果以便設置到ajax響應中,然後進行處理。如何處理Ajax結果(Struts2)

我有這個,它發送一個選擇下拉菜單的正確值的動作方法:

$('#selectRegionList').on('change', function() { 
var request = $.ajax({ 
url: "/cars/annCreateEdit!updateLocs.jc", 
type: "POST", 
data: {id: this.value} 
}); 

哪個正確地談到在操作此方法,並加載對象列表(對象的一些attribues是字符串名稱,字符串描述,龍ID)

public String updateLocs() throws SQLException { 
String regionName = findParamStringValue("id"); 
if (annoEditParams.getRegionStr() == null) { 
addActionError("error.region.id.null"); 
} else { 
Region region = new Region(); 
region.setName(regionName); 
criteria.setRegion(region); 
annoEditParams.setRegion(jobsService.loadRegion(criteria)); 
locations = annoEditParams.getRegion().getLocations(); 
} 

return "jsonResult"; 

} 我已在jsonResult的動作映射到:

<result name="jsonResult" type="json"> 
<param name="root">locations</param> 
<param name="location">/WEB-INF/jsp/locs.jsp</param> 
</result> 

最後正確的結果是被稱爲(我知道是因爲現有的列表(如果我使用規則提交按鈕加載一個)被清零)

request.done(function(response) { 
$('#selectLocationList option').remove(); 
//what do i do here ? :o(
}); 
  • ,但我不知道我是什麼旁邊做

我想填充頁面的部分是一個struts2的選擇標記,如下所示:

<s:select 
key="label.select.location" 
list="annoEditParams.region.locations" 
name="annoEditParams.locationStr" 
listKey="name" 
listValue="description" 
multiple="false" 
size="1" 
value="%{annoEditParams.locationStr}" 
disabled="%{annoEditParams.region.locations.size == 0}" 
id="selectLocationList" 
cssClass="span2" 
/> 

1:訪問正確的參數,其中包含我已加載的列表 2:如果必須在某些特殊對象中設置該列表以訪問jsp 3:保持我的理智: -/

援助/指導將非常感激。 謝謝!

回答

1

您可以保存您的Ajax請求中的可變分配,只是直接定義在Ajax調用成功的回調,如果你想:

$.ajax({ 
    url: "/cars/annCreateEdit!updateLocs.jc", 
    type: "POST", 
    data: {id: this.value}, 
    success : function(response) 
    { 
     $('#selectLocationList option').remove(); 
     $('#selectLocationList').html(response); 
    } 
}); 

如果你的反應是一個HTML代碼段,這只是一個列表的選項<option value='x'>x</option><option value='y'>y</option>等,您可以將其設置爲指定選擇標記的innerHTML,如上所述。既然您選擇了返回JSON,現在您必須首先使用類似於here (Updating a Drop down list with Jquery from JSON)的東西來解析客戶端上變量response的JSON。

+0

感謝您的回答 - 我相信我知道您的意思是由額外的jsp來接收html - 但是我需要它進入struts選擇標記(爲了保持「傳統」post和page刷新的功能禁用JS的用戶(用於輔助功能等)) - 我編輯了我的問題以添加s:select我正在使用。 –

+0

@KenAlton無論按鈕的HTML如何生成,選擇按鈕的ID都是選擇按鈕的ID。 –

+0

謝謝你們。我確實是這樣做的 - 將結果作爲字符串返回 - 從數據庫迭代結果並組裝「」;並添加到列表,它的工作原理。我只是假設在jQuery中有一種更優雅的方式。不過,謝謝你們的回答,並且感謝你們讓我從中獲得的額外理解。 –