ajax在操作中遇到的问题

Posted dumenglong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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": 返回纯文本字符串

以上是关于ajax在操作中遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用Ajax解析数据遇到的问题

在 laravel 中使用 ajax 从控制器刀片文件中传递搜索数据时遇到问题

我在 Laravel 7 中遇到 ajax 问题

ajax遇到的两个小bug

在使用 axios 测试 ajax 模块时遇到问题

在 IE 上使用 ajax 调用时遇到 403 错误