【问题标题】:Stop jQuery function from executing停止执行 jQuery 函数
【发布时间】:2018-11-10 07:47:27
【问题描述】:

我想要一个 save 函数来检查是否设置了会话(使用另一个函数)并停止基本函数继续,但该函数似乎继续(以下不可执行):

//1. Base save function

$("#save").click(function (e) {				
  e.preventDefault();
  //step 0 check if logged in
  checksession();
  console.log("teststop"); //just for testing
  //steps x continue execution of session exists
});

//2. Session check function
function checksession(){	
    $.ajax({ 
	type: "GET",
	url:"xxxx/sessioncheck.php",
	dataType: "text",
	cache: false,
	success: function(data){
	    if(data == "no"){
		return;
            } else {} //continue	
        }
    });
}

【问题讨论】:

  • $.ajax 是异步的,这意味着下面的代码将继续执行并且不会阻塞。此外,即使这是一个阻塞调用,它也不会起作用,return 仅适用于它被调用的函数。它不会传播到调用的外部函数并导致该函数返回它也不应该它。

标签: jquery execution


【解决方案1】:

checksession的AJAX success回调成为执行“保存”操作(或不执行)的函数

//1. Base save function

$("#save").click(function (e) {             
  e.preventDefault();
  //step 0 check if logged in
  checksession();
});


//2. Session check function

function checksession(){    
    $.ajax({ 
    type: "GET",
    url:"xxxx/sessioncheck.php",
    dataType: "text",
    cache: false,
    success: function(data){
            if(data == "no")
            {
                console.log( "stop" );
            } else {
                console.log( "continue" ); 
                doSave();
            }   
        }
    });
}


//3. Perform save operation

function doSave() {
    //
    // proceed with the save operation
    //
}

【讨论】:

    【解决方案2】:

    试试这个:

     $("#save").click(function (e) {    
    
    
      e.preventDefault();
      //step 0 check if logged in
      check();
    if(check()==true){
    continue;
    }else{
    stop
    }
      console.log("teststop"); //just for testing
      //steps x continue execution of session exists
    });
    
    //2. Session check function
    function check(){
    var result=false;
        function checksession(){    
            $.ajax({ 
            type: "GET",
            url:"xxxx/sessioncheck.php",
            dataType: "text",
            cache: false,
            success: function(data){
                if(data == "no"){
                return;
                    } else {
    result=true;
    } //continue    
                }
            });
        }
    return result;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2021-06-11
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      相关资源
      最近更新 更多