起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3970|回复: 1

[分享] baas send request 有时候根本没调服务端,就返回success

[复制链接]

17

主题

80

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
QQ
发表于 2015-12-19 12:00:25 | 显示全部楼层 |阅读模式
本帖最后由 flygis 于 2015-12-19 14:51 编辑

这两天发现baas send request 有时候感觉没有调服务端,就返回success 结果出现返回的参数未定义错误,这两天发现好多次,跟踪代码发现实际访问了服务器,但是服务端收到的request对象参数为null,所以直接返回了,改为用jquery ajax 对象发请求,就可以了。像这样:                          $.ajax({  
                type: "POST",  
                cache: false,  
                data: "action=chk&userid=" + userid,
                async: false,  
                url: "/baas/baas/chkuser",  
                success: function(userinfo) {
        。。。。
比如今天用http://bbs.wex5.com/forum.php ... ight=windowReceiver这个里面的示例代码,第一次提交没问题,如果更换图片再提交,就会出现这种情况,直接返回,报参数未定义错误。

前端js:
        Model.prototype.file1Change = function(event){
                //从选取文件对话框返回后,检查用户是否选择了文件,是否选择了图片文件
                if(!event.target.files){
                        return;
                }
                var $image = $('.cropper-example-1 > img');
                var $inputImage = $( this.getElementByXid('inputImage'));
                var file = event.target.files[0];
                if (/^image\/\w+$/.test(file.type)) {
           var  blobURL = URL.createObjectURL(file);
            $image.one('built.cropper', function () {
                            URL.revokeObjectURL(blobURL); // Revoke when load complete
                    }).cropper('reset').cropper('replace', blobURL);
            $inputImage.val('');
          } else {
            this.comp("messageDialog1").show({"message":'请选择图片文件!'});           
          }        
        };


        Model.prototype.button2Click = function(event){
                this.comp("button2").set({"disabled":true});
                var self=this;
                var picName=UUID.createUUID();
                var result= $('.cropper-example-1 > img').cropper("getCroppedCanvas");
                var imgdata=result.toDataURL();
                if (imgdata == null)
                {
                        return;
                }
                var params = {
                                "image":imgdata,
                                "subPath":"D:\\titlePic\\",
                                "PicName":picName
                        };
                Baas.sendRequest({
                        "url" : "/baas/test", // servlet请求地址
                        "action" : "uploadImageAjax", // action
                        "params" : params, // action对应的参数
                        "success" : function(resultData) {//这里出现resultData未定义错误
                                if(resultData.success=="上传文件成功!"){
                                        self.comp("windowReceiver1").windowEnsure(picName);
                                        alert("上传文件成功!");
                                }else{
                                        self.comp("messageDialog1").show({"message":result.success});
                                }               
                        }, // 请求成功后的回调方法
                 });
        };


后端服务:
   //存储前台传过来的图片
        private static void uploadImageAjax(ServletRequest request, ServletResponse response) throws ParseException, SQLException, NamingException, IOException {
             // 参数序列化
         JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
         JSONObject jsonObj = new JSONObject();
         String image = params.getString("image");        //拿到字符串格式的图片
         String subPath=params.getString("subPath");
         String PicName=params.getString("PicName");
         System.out.println(PicName);
         // 只允许jpg
         String header ="data:image/jpeg;base64,";            
             // 去掉头部
             image=image.split(",")[1];
             //image = image.substring(header.length());
             // 写入磁盘
             String success = "fail";
             BASE64Decoder decoder = new BASE64Decoder();
             try{
             byte[] decodedBytes = decoder.decodeBuffer(image);        //将字符串格式的image转为二进制流(biye[])的decodedBytes
             String imgFilePath =subPath+PicName+".jpg";                        //指定图片要存放的位置
             FileOutputStream out = new FileOutputStream(imgFilePath);        //新建一个文件输出器,并为它指定输出位置imgFilePath
             out.write(decodedBytes); //利用文件输出器将二进制格式decodedBytes输出
             out.close();                        //关闭文件输出器
             success = "上传文件成功!";
             System.out.println("上传文件成功!");        
             }catch(Exception e){
             success = "上传文件失败!|"+e.getMessage();
             e.printStackTrace();
                     jsonObj.put("success", success);      
             }
             finally{
                     jsonObj.put("success", success);
                     Util.writeJsonToResponse(response, jsonObj);
             }
        }



32

主题

109

帖子

295

积分

中级会员

Rank: 3Rank: 3

积分
295
QQ
发表于 2016-8-25 19:05:25 | 显示全部楼层
你好,要是改了之后还是未定义该怎么改?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 02:44 , Processed in 0.058102 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表