栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将$ .ajax和JSON对象用作数据时,request.getParameter()返回null

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将$ .ajax和JSON对象用作数据时,request.getParameter()返回null

您的错误在于选项的

dataType
data
属性
$.ajax()

  $.ajax({        type:"POST",        url:"InsertServlet",        dataType:"json",        data: { name: nameIn,  ssn: ssnIn,  birth: birthIn,  xxxx: xxxxIn        },        // ...

按照该

$.ajax()
文件,该
dataType
物业在什么格式指示jQuery的
响应
将返回(这是你的情况的方式只是HTML作为以表示
text/html
绝对不是JSON所指示
application/json
)。它不代表您错误预期的请求参数格式。并且,该
data
属性必须表示URL编码的HTTP请求查询字符串符合
application/x-www-form-urlenpred
内容类型,因此不能是JSON对象。

这就解释了为什么请求参数为

null

删除

dataType
属性。您在这里不需要它,而jQuery足够聪明,可以根据响应的
Content-Type
标头自动检测到它。

data
属性修复为真实的URL编码的HTTP请求查询字符串。您可以通过以下两种方式之一进行操作:

  1. $.serialize()
    在表格上使用。给定一个
    <form id="yourFormId">

    data: $("#yourFormId").serialize(),
  2. 使用

    $.param()
    JSON对象上:

    data: $.param({    name: nameIn,     ssn: ssnIn,     birth: birthIn,     xxxx: xxxxIn}),
  3. 手动编写URL编码的HTTP请求查询字符串。

    data: "name=" + enpreURIComponent(nameIn)
    • “&ssn=” + enpreURIComponent(ssnIn)
    • “&birth=” + enpreURIComponent(birthIn)
    • “&xxxx=” + enpreURIComponent(xxxxIn),
  4. 使用

    JSON.stringify()
    适当的内容类型一起。

        contentType: "application/json",    data: JSON.stringify({ name: nameIn,  ssn: ssnIn,  birth: birthIn,  xxxx: xxxxIn        }),

这仅需要更改servlet:它必须将请求正文解析为JSON,而不使用

getParameter()
诸如此类。由于这很繁琐,因此最好用JAX-RS
Web服务替换Servlet,该Web服务提供内置的功能来透明地处理此问题。


具体问题 无关
,使用

$.post()
代替
$.ajax()
可以减少样板代码。

    $.post("InsertServlet", $("#yourFormId").serialize(), function(responseHtml) {        $('#state').html(responseHtml);     });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号