【问题标题】:How to pass parameters to servlet using Ext.Ajax.request?如何使用 Ext.Ajax.request 将参数传递给 servlet?
【发布时间】:2013-06-01 21:47:45
【问题描述】:

我有一个 extjs 表单,我正在尝试使用 Ext.Ajax.request 将参数发布到 servlet。调用正在工作并且正在调用 servlet,但由于某种原因,参数的值没有被发送。我会发布我的代码,谁能告诉我我做错了什么。提前致谢。

这是来自 ExtJS 表单的调用:

buttons: [{

        text: 'Search',
        handler: function(){

                          var fName = Ext.getCmp("fName").getValue();

                          Ext.Ajax.request({

                               url : 'LookUPCustomer',

                               method: 'POST',
                               headers: { 'Content-Type': 'application/json'},                    
                               params : fName, // this value isn't being passed to servlet


                               success: function ( result, request ) {
                                    var resultData1 = JSON.parse(result.responseText);
                               },

                               failure: function ( result, request ) {
                                 resultData = JSON.parse(xmlhttp.responseText);
                               }        

                          });

               }]; 

这里是 servlet 代码:

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


         PrintWriter out = response.getWriter();

         // value of fName is null, not being passed from the form
         String fName = request.getParameter("fName");

         // does some processing....


    // print back to the form
         response.setContentType("application/json");

     out.println(jsArray);      
   }

【问题讨论】:

  • fName 包含什么?作为参数,它应该类似于fName=someValue。键=值
  • fName 包含一个字符串值
  • 第一步应该是查看 HTTP 请求(Firebug、Chrome 开发工具等)以确定是否存在预期的参数。

标签: java ajax servlets extjs extjs4


【解决方案1】:

params 参数应该是一个带有键值对的 JSON 对象。这是一个例子:

params: {
           firstName: 'Jeff',
           lastName: 'Tester'
        }

或者插入你的变量

params: { fName: fName }

【讨论】:

  • 是的,我尝试过这样做,但在 servlet 中仍然为空
  • @JS11 你用的是什么版本的 ExtJS?如果您使用的是 Ext 版本
【解决方案2】:

正如你所说,你使用的是 extjs 4.0.7。它使用额外参数。 所以你需要像下面这样编码

在发送之前,只需验证 fName 是否包含所需的值。

Ext.Ajax.request({
    url : <URL>,
    method: 'POST',                    
    extraParams :{ fName : fName },  
    success: function ( result, request ) {
         var resultData1 = JSON.parse(result.responseText);
    },
    failure: function ( result, request ) {
      resultData = JSON.parse(xmlhttp.responseText);
    }        
});

谢谢

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多