• 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;
                }
               

      

    三、总结

    不积跬步,无以至千里!

  • 相关阅读:
    [原创]Android中LocationManager的简单使用,获取当前位置
    Android远程图片获取和本地缓存
    Android wakelock机制
    android上的缓存、缓存算法和缓存框架
    052 自动将每日的日志增量导入到hive中
    051 日志案例分析(PV,UV),以及动态分区
    050 sqoop的使用
    049 CDH商业版本的搭建(hadoop5.3.6 +hive+sqoop)
    000 Python的运行
    048 hive运行的相关配置
  • 原文地址:https://www.cnblogs.com/YanYongSong/p/5244870.html
Copyright © 2020-2023  润新知