2016-09-28 88 views
3

我們可以通過json攔截器發送JSON到Struts2動作。在http://tech.learnerandtutor.com/send-json-object-to-struts-2-action-by-jquery-ajax/有很好的樣本。通過使用strut2 jQuery插件標籤發送JSON對象到Struts 2動作

json攔截要求請求content typeapplication/jsonapplication/json-rpc這可以當我們直接使用Ajax等進行設定:

$.ajax({ 
    url: "writeJSON.action", 
    data: data1, 
    dataType: 'json', 
    contentType: 'application/json', 

我們使用Struts 2個的jQuery插件標籤(sj:asj:submit但是... )爲我們管理Ajax電話。

有什麼方法可以設置contentType這些標籤。

我沒有找到此標籤屬性。

如果沒有實現,是否有其他方法來設置它。

回答

2

您應該將Content-type: application/json標頭設置爲由$.ajax()使用的xhr對象。

$.ajax({ 
    url: "writeJSON.action", 
    data: data1, 
    dataType: 'json', 
    contentType: 'application/json', 

該插件使用$.ajaxSubmit(),這種提交應該被淘汰,因爲它不使用JSON的數據。

+0

親愛的@RomanC,謝謝,但我得到的TypeError:xhr是未定義的,我們使用的是struts 2 jquery插件版本爲'3.7.1'。 'event.originalEvent'具有'form','formData'和'options'屬性。 –

+0

@AlirezaFattahi是的,它是未定義的,該主題在創建該對象之前發佈。 –

+0

注意,'xhr.setRequestHeader(「Content-Type」,'application/json');'如果你在'ajaxSend'中使用它''(document).ajaxSend(function(e,xhr,設置){if(youCondition)xhr.setRequestHeader(「Content-Type」,'application/json');});'你有'xhr'並且可以破解它。無論如何,我認爲在這種情況下純粹的'.ajax'似乎更符合邏輯 –