• jquery Ajax 的进一步了解


    一、前言

      当我们要用到异步请求时可以使用ajax,在之前对于异步的概览只是停留于字面意思上。当今天遇到一个问题时,才真正了解异步的原理。

    二、实例

      目的:创建一个Js函数,通过ajax将一个参数提交到后台进行验证并将验证结果返回到前台作为函数的返回值。

      出现的问题:当运行时函数的返回值总得不到预期的值,但ajax请求确实是成功的,最终发现是由于ajax的异步请求导致了这一问题。

    修改之前的代码:

     function checkIsproj(node) {                
                    var r;
               $.post("Ajax.ashx", {
                        ParamType: "Init",
                        Action: "CheckIsProj",
                        SelectNode: node.text
                    },
                    function (data, txtstatus) {
                      
                        if (data == 0) {
                           
                            $.messager.alert("提示", "请选择项目!");
                            //$("#ProjectTree").combo("showPanel");
                            r = false;
                           
                        }
                        else {
                            $.post("Ajax.ashx", {
                                ParamType: "Init",
                                Action: "ProjInfroSession",
                                CurrProjName: node.text
                            }
                                );
                            debugger;
                            r = true;
                            
                        }
                    }
                    )
    
                    return r;
                }

    修改之后(将请求变为同步):

                //修改:检查所选择的节点是否是项目
                function checkIsproj(node) {                
                    var r;
                    $.ajax({
                        type: "post",
                        url: "Ajax.ashx",
                        async: false,
                        data:{
                            ParamType: "Init",
                            Action: "CheckIsProj",
                            SelectNode: node.text
                        },
                        success: function (data,txtstatus)
                        {
                            if (data == 0) {
    
                                $.messager.alert("提示", "请选择项目!");
                                //$("#ProjectTree").combo("showPanel");
                                r = false;
                            }
                            else {
                                $.post("Ajax.ashx", {
                                    ParamType: "Init",
                                    Action: "ProjInfroSession",
                                    CurrProjName: node.text
                                }
                                    );                           
                                r = true;
                            }
                        }
                    });              
    
                    return r;
                }
               

      

    三、总结

    不积跬步,无以至千里!

  • 相关阅读:
    generatorConfiguration详解
    fastjson java类、字符串、jsonObject之前的转换
    非CI执行Allure2 trends空白问题
    如何相互转换逗号分隔的字符串和List【转】
    搞服务器性能时有感
    EF实体实现链接字符串加密
    小程序接口测试之本地测试
    WebApi生成在线API文档--Swagger
    C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法【转】
    懵逼的this指向
  • 原文地址:https://www.cnblogs.com/YanYongSong/p/5244870.html
Copyright © 2020-2023  润新知