2 qq 33873617 qq_33873617 于 2016.02.25 16:38 提问

EXTjs页面submit后 action.result接收不到参数?? 10C

我的目的是 extjs提交form到 process.jsp
process.jsp 处理数据后进行两个操作:
1: 通过out.println() 返回操作结果 true或false 给extjs页面的 action.result
extjs页面根据操作结果关闭窗口
2. process.jsp 通过window.open 弹出新窗口,进行下一个页面的操作 (那一堆js就是弹新窗口的)

现在遇到的情况是process.jsp处理数据后,虽然有out.println()返回,但EXTJS页面action.result 接收不到结果
新窗口倒是可以正常弹出
如果去掉弹新窗口的js代码,EXTJS页面action.result 就可以接收到结果了,奇怪啊
1、EXTjs A页面,将信息submit到process.jsp,然后等待操作结果

  fm.getForm().submit({
                        url : 'process.jsp' ,
                        waitMsg : 'Uploading your file...',
                        success : function(fm, action) {
                            if (action.result == true) {
                                Ext.MessageBox.alert('OK',
                                    'success.');
                                window.close();
                            }
                        },
                        failure : function(fm, action) {
                            if (action.result == false) {
                                alert('File upload false.');
                            }
                        }

2、process.jsp 页面根据obj返回类型,分别返回A页面
out.println("false"); 和 out.println("true"); 但A页面action.result 始终接收不到参数
若去掉process.jsp 页面out.println代码下面的js语句则正常,什么原因

     <%      
    String errorStr = "";   
    Object obj = Getdata.doprocess(request);
    if (obj instanceof String && obj.toString().length() > 0) {
        errorStr = (String) obj;  
        out.println("false");   
    %>    
        <script type="text/javascript">   
                window.onload=function(){   
                      var newWim=open("Error.jsp");   
                      newWim.document.write("<%=errorStr%>");
                };   
        </script>
    <%   
    }else if (obj instanceof JSONArray){
        out.println("true");             
    %>     
      <script type="text/javascript">   
                window.onload=function(){
                   var newWim=open('VariantSelection.jsp');  
                };   
      </script>
    <%    
    }
    %>

3个回答

qq_33873617
qq_33873617   2016.02.25 16:41

ExtJS 3.2版本

showbo
showbo   Ds   Rxr 2016.02.25 17:27

jsp要返回json格式字符,你返回的那一堆script代码是要干嘛
http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.form.BasicForm-method-submit

 submit( options ) : BasicForm
Shortcut to do a submit action.

Available since: 1.1.0

Parameters
options : Object
The options to pass to the action (see doAction for details).

Note: this is ignored when using the standardSubmit option.

The following code:

myFormPanel.getForm().submit({
    clientValidation: true,
    url: 'updateConsignment.php',
    params: {
        newStatus: 'delivered'
    },
    success: function(form, action) {
       Ext.Msg.alert('Success', action.result.msg);
    },
    failure: function(form, action) {
        switch (action.failureType) {
            case Ext.form.Action.CLIENT_INVALID:
                Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
                break;
            case Ext.form.Action.CONNECT_FAILURE:
                Ext.Msg.alert('Failure', 'Ajax communication failed');
                break;
            case Ext.form.Action.SERVER_INVALID:
               Ext.Msg.alert('Failure', action.result.msg);
       }
    }
});
would process the following server response for a successful submission:

{
    "success":true, // note this is Boolean, not string
    "msg":"Consignment updated"
}
and the following server response for a failed submission:

{
    "success":false, // note this is Boolean, not string
    "msg":"You do not have permission to perform this operation"
}
qq_33873617
qq_33873617   2016.02.25 21:17

谢谢码农回复
我的目的是 extjs提交form到 process.jsp
process.jsp 处理数据后进行两个操作:
1: 通过out.println() 返回操作结果 true或false 给extjs页面的 action.result
extjs页面根据操作结果关闭窗口
2. process.jsp 通过window.open 弹出新窗口,进行下一个页面的操作 (那一堆js就是弹新窗口的)

现在遇到的情况是process.jsp处理数据后,虽然有out.println()返回,但EXTJS页面action.result 接收不到结果
新窗口倒是可以正常弹出
如果去掉弹新窗口的js代码,EXTJS页面action.result 就可以接收到结果了,奇怪啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!