2

我将 jQuery AJAX POST 发布到 servlet,数据采用 JSON 字符串的形式。我不确定数据是否被发布。另外,我想通过从 json 对象中获取登录名和密码来验证它。

下面是代码片段:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>

    <script type="text/javascript">            
    function doajax(){

    var fullname=$("#fullname").val;
    var mobileno=$("#mobileno").val;


      $.ajax({
         url: 'dvsds',
         type: 'POST',
         dataType: 'json',
         data:{ "mobileno":mobileno, "fullname":fullname},
          error:function(){
              alert("error occured!!!");
          },
          success:function(data){
               alert(data.message);
         }
       });
      }
</script>

我的 servlet 端代码:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("application/json");
    PrintWriter out = response.getWriter();
    try {
        String message=null;

        JSONObject jObj = new JSONObject(request.getParameter("jsondata"));
        Iterator<String> it = jObj.keys(); //gets all the keys

        String Name=null;
        String mobileno=null;

        while(it.hasNext())
        {
            String key = (String) it.next(); // get key

            if(key.equals("fullname"))
                 Name = (String)jObj.get(key);
            else if(key.equals("mobileno"))
                mobileno=(String)jObj.get(key);
        }


        if(Name=="abc" &&  mobileno=="123" )
            message="success";
        else
            message="fail";

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("message", message);
        out.println(jsonObject);
4

2 回答 2

0

您不需要对数据进行字符串化...只需将其作为普通的旧 javascript 对象发送...通过将数据类型指定为 json ... jquery 将弄清楚如何在请求中打包数据

无需在服务器端更改任何内容

因此,如果您的 AJAX 调用变为:

  $.ajax({
     url: 'dvsds',
     type: 'POST',
     dataType: 'json',
     data: jsondata,
      error:function(){
          alert("error occured!!!");
      },
      success:function(data){
           alert(data.message);
     }
   });

在 servlet 中检索它们为

String fname = request.getParameter("fullname");
String mobileno = request.getParameter("mobileno");

我认为您需要注意区分大小写

已编辑

我看到你能把你的脚本改成如下。

<script type="text/javascript">            
function doajax(){

var fullname=$("#fullname").val;
var mobileno=$("#mobileno").val;

var postReqData = {}; // Create an empty object
postReqData['mobileno'] = mobileno;
postreqData['fullname'] = fullname;


  $.ajax({
     url: 'dvsds',
     type: 'POST',
     dataType: 'json',
     data: postReqData,
      error:function(){
          alert("error occured!!!");
      },
      success:function(data){
           alert(data.message);
     }
   });
  }

于 2013-07-23T06:32:15.653 回答
0

jQuery.Ajax函数的datatype属性声明如下:

数据类型(默认:智能猜测(xml、json、脚本或 html))

类型:字符串

您期望从服务器返回的数据类型。

因此,您发送的不是 JSON 字符串。您发送的是普通的旧请求数据。

您可以使用以下方法在您的 servlet 中获取此数据:

String mobileno = request.getParameter("mobileno");
于 2013-07-23T07:59:03.727 回答