【问题标题】:Send JSON object to Struts 2 action by using strut2 jquery plugin tags使用 strut2 jquery 插件标签将 JSON 对象发送到 Struts 2 操作
【发布时间】:2016-09-28 14:15:31
【问题描述】:

我们可以通过json拦截器将JSON发送到Struts2动作。 http://tech.learnerandtutor.com/send-json-object-to-struts-2-action-by-jquery-ajax/ 有很好的示例。

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

我没有找到这个标签属性。

如果没有实现,有没有其他方法可以设置。

【问题讨论】:

    标签: jquery json ajax struts2 struts2-jquery


    【解决方案1】:

    您应该将Content-type: application/json 标头设置为$.ajax() 使用的xhr 对象。

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

    插件使用$.ajaxSubmit(),这种提交应该被淘汰,因为它不适用于json数据。

    【讨论】:

    • 亲爱的@RomanC,谢谢,但我得到了TypeError: xhr is undefined,我们正在使用struts 2 jquery 插件版本3.7.1event.originalEvent 具有 formformDataoptions 属性。
    • @AlirezaFattahi 是的,未定义,主题是在创建此对象之前发布的。
    • 请注意,xhr.setRequestHeader("Content-Type", 'application/json'); 如果您在 ajaxSend 中使用它,就像这样 $(document).ajaxSend(function(e, xhr, settings) {if(youCondition) xhr.setRequestHeader("Content-Type", 'application/json'); });xhr 并且可以破解它。无论如何,我认为纯粹的$.ajax 在这种情况下似乎更合乎逻辑
    • @AlirezaFattahi 您可以继续破解该插件,因为它不适用于动态属性,并且您无法在任一 api 中传递您需要的内容类型。
    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 2013-09-30
    • 2023-04-10
    • 2022-01-04
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多