如何在Servlet中通过ajax获取数据?

3

我想将页面上的一些数据发送到servlet

因此,我编写了以下jquery代码来实现

我使用所有数据来构建一个json字符串,并直接将其发送到servlet

但是我不知道如何在servlet中从ajax获取整个数据

$("#save").click
(
    function()
    {
        $.ajax
        (
            {
                url:'/WebApplication1/Controller',
                data:'{"name":"abc","address":"cde"}',
                type:'post',
                cache:false,
                success:function(data){alert(data);},
                error:function(){alert('error');}
            }
        );
    }
);

如果在Chrome浏览器的请求头中查看“表单数据”部分,您会发现整个JSON字符串都是密钥。

Request URL:http://192.168.0.13/WebApplication1/Controller
Request Method:POST
Status Code:404 Not Found
Request Headersview source
Accept:*/*
Accept-Charset:Big5,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:112
Content-Type:application/x-www-form-urlencoded
Host:192.168.0.13
Origin:http://192.168.0.13
Referer:http://192.168.0.13/system_admin/building.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.910.0 Safari/535.7
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
{"name":"abc","address":"cde"}:
Response Headersview source
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Language:en
Content-Type:text/html; charset=iso-8859-1
Date:Wed, 15 Feb 2012 12:37:24 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1
Transfer-Encoding:chunked
Vary:accept-language,accept-charset
2个回答

8
请看这里,
data:'{"name":"abc","address":"cde"}',

您的 data 属性有误。它不应该是一个字符串,而是一个真正的 JSON 对象。请移除那些单引号。

data:{"name":"abc","address":"cde"},

这样它就可以像平常在servlet中一样使用了。

String name = request.getParameter("name"); // abc
String address = request.getParameter("address"); // cde

如果仍无法解决问题,请前往如何使用Servlet和Ajax?查看完整示例,以排除实际问题可能出现在其他地方的情况。
另请参见:

0

你可以通过Ajax发送数据而不需要任何表单,可以通过GET或POST方式进行,但是你必须以某种方式调用执行Ajax请求(HTTP请求)的函数。

例如,你可以通过链接来调用你的函数:

HTML代码如下:

<a href="" onClick="javascript: yourAjaxCallFunction(parameters)" >Link Text</a>

JavaScript:

function yourAjaxCallFunction(parameters) 
{
  //this function sends the request via jquery ($().ajax) 
  sendHttpRequest(parameters);

  //this one handles the response (process data)
  processResult();
}

这个链接可能是你正在寻找的 jQuery文档中的ajax函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接