ajax在操作中遇到的问题

ajax用的是jquery中的,在向后退发送请求后执行success中的function操作,

 $('#btna').on('click', function () {
            var a = $(".check");
            var roomlist = [];
            a.each(
                function (index) {
                    roomlist.push(a[index].getAttribute('dataid'));
                }
            );
            $.ajax({
                url: "{:url('admin/Main/btna')}",
                type: "post",
                data: {
                    'roomid': JSON.stringify(roomlist)
                },
                dataType: 'json',
                success: function (res) {
                    window.location.reload();
                }
            });
        })

这是一个按钮的点击事件执行的js操作,在请求成功后,只想实现页面自动刷新功能,wimdow.location.reload(),但是出现了问题,一直没有效果,

php部分的代码是这样的

    public function btna(Request $request)
    {
        // $this->islogin();
        $roomid = $request->param('roomid');

        $a = json_decode($roomid, true);

        foreach ($a as $k => $v) {
            $res = Db::table('room')->where('room_id', $v)->update(['static' => '1', 'color' => 'blue']);
        }

        // if ($res > 0) {
        //     $msg =  [
        //         'status' => 0,
        //         'msg' => '修改成功',
        //         'roomid' => $roomid
        //     ];
        // } else {
        //     $msg = [
        //         'status' => 1,
        //         'msg' => '修改未成功',
        //         'roomid' => $roomid
        //     ];
        // }
        // return $msg;
    }

此时if判断后的为已经注释掉的,那么问题就出现了,为什么后台没有给返回值,而且js中也不需要接收任何值,自动刷新功能还是不执行?

有两个解决办法:

1.假如说后台值执行代码,不返回任何值给ajax,此时我们需要将   dataType: 'json'    这段进行删除,则自动刷新功能就可以实现

2.加入说后台需要给ajax一个返回值,则需要将注释的部分放开,让这段代码执行,前台ajax的部分不需要改动,同样也可以执行success中的操作,关键就是这个平时

没有注意到的 dataType: 'json'  ,

 dataType: 'json'  , 预期服务器返回的数据类型,如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串

猜你喜欢

转载自www.cnblogs.com/dumenglong/p/11456890.html