FUNGKAKIT
FUNGKAKIT
  • 发布:2018-09-17 09:05
  • 更新:2018-09-17 10:32
  • 阅读:15384

uni-app网络请求问题,数据提交失败,后台返回错误

分类:uni-app

在写一个登录系统的时候,使用uni-app的网络请求时,出现了请求成为(状态码:200),但数据返回错误的问题(服务器API接口判断用户名为空),初步怀疑是服务器没接收到POST发送的data(参数为u、p),但是同样的接口使用MUI写是没有问题的,API接口也用postman和apizza测试过,请问一下各位大神,有没有遇到类似的问题,或者有什么解决办法,万分感谢!

login() {  
                this.loading = true;  
                if (this.account.length < 1) {  
                    uni.showToast({  
                        icon: 'none',  
                        title: '用户名不能为空'  
                    });  
                    return;  
                }  
                if (this.password.length < 1) {  
                    uni.showToast({  
                        icon: 'none',  
                        title: '密码不能为空'  
                    });  
                    return;  
                }  
                const ajaxdata = JSON.stringify({  
                    u: this.account,  
                    p: this.password  
                })  
                const url = server.HTTP('api/LoginApi/login');  
                console.log("请求地址:" + url);  
                uni.request({  
                    url: url,  
                    data: ajaxdata,  
                    dataType: 'json',  
                    method: 'POST',  
                    success: function (result) {  
                        var jsondata = result.data;  
                        console.log("服务器状态码:" + result.statusCode);  
                        console.log("返回数据状态:" + jsondata.state);  
                        let keys = [];  
                        for (let i in jsondata) {  
                            keys.push(i);  
                        }  
                        console.log("返回对象的所有属性:" + keys);  
                        if (jsondata.state == 1) {  
                            console.log("登录成功" + result.state);  
                            uni.showToast({  
                                icon: 'none',  
                                title: '登录成功'  
                            });  
                        } else {  
                            console.log(jsondata.msg)  
                            uni.showToast({  
                                icon: 'none',  
                                title: jsondata.msg  
                            });  
                        }  
                    },  
                    fail: () => {  
                        console.log("登录失败")  
                    },  
                    complete: () => {  
                        this.loading = false;  
                    }  
                })  
            }
2018-09-17 09:05 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

uni-app你传的是json给后端,mui里你应该是用的表单方式。

  • FUNGKAKIT (作者)

    谢谢,我在mui里也是提交json的

    2018-09-17 10:31

  • DCloud_UNI_GSQ

    @344806256@qq.com:看了,你提交的不是json,dataType是表示返回json。

    2018-09-17 10:38

  • FUNGKAKIT (作者)

    哦是这样,明白了,非常感谢

    2018-09-17 10:49

FUNGKAKIT

FUNGKAKIT (作者)

在mui里面也是使用同样的接口和同样的方法,在mui里面是可以通过的

mui.ajax("api/LoginApi".toHttp(), {  
                    type: 'post',  
                    data: {  
                        u: account,  
                        p: pwd  
                    },  
                    dataType: 'json',  
                    success: function(data) {  
                        if(data.state == 1) {  
                            //判断是否自动登陆  
                            var isActive = document.getElementById("autoLogin").classList.contains("mui-active");  
                            if(isActive) {  
                                //保存token  
                                SetLocalToken(data.token);  
                            }  
                            //本次登陆的token  
                            SetSessionToken(data.token);  
                            mui.openWindow({  
                                url: "../index.html"  
                            });  
                        } else {  
                            mui.toast(data.msg, {  
                                duration: 'long',  
                                type: 'div'  
                            })  
                        }  
                        $login.button('reset');  
                    },  
                    error: function(e1, e2, e3) {  
                        console.log(e1 + e2 + e3);  
                        mui.toast('登陆超时!请检查你的网络状态', {  
                            duration: 'long',  
                            type: 'div'  
                        })  
                        $login.button('reset');  
                    },  
                    timeout: 10000  
                });

该问题目前已经被锁定, 无法添加新回复