如何访问从jquery ajax调用返回的数据? $ .ajax(…)之外;
如何从jquery ajax调用访问数据返回。 $ .ajax()之外。
//Reloads the inital page function jobexist( jobname ) { var dataString = 'jobname=' + jobname; var found = false; $.ajax( { type: 'POST', url: "/genode/jobs/jobexist.m", data: dataString, dataType: 'json', success: function(data) { alert("Passed"); if( data.result == 0 ) { found = true; }else{ found = false; } }, error: function( data ) { alert("Login Failed"); return -1; //alert(data); } }); if( found == true ) { alert("found!")' return true; }else{ alert("not found!"); return false; } } if( !jobexist(jobname) ) { $("#jobname_error").text("This jobname already exist."); $("#jobname_error").show(); return false; }
Ajax以异步方式工作,因此在ajax调用完成之前将触发if found语句。
你可以做的是从你的ajax成功函数中调用一个函数,并传递你想要的任何数据
function found(data){ if( data.result == 0 ) { alert("found!") return true; }else{ alert("not found!"); return false; } } $.ajax( { type: 'POST', url: "/genode/jobs/jobexist.m", data: dataString, dataType: 'json', success: function(data) { alert("Passed"); found(data); }, error: function( data ) { alert("Login Failed"); return -1; //alert(data); } });
JavaScript是异步的,这意味着你应该改变一下你的思维方式,并开始进入回调和闭包的奇怪世界。 您可以简单地在ajax调用范围之外公开一些变量,并为其分配数据,但这并不是您想要做的事情。
你想要做的是:
-
定义一个回调函数:
function afterAjax(){ $(“#jobname_error”)。text(“此作业名已存在。”); $( “#jobname_error”)显示()。 返回虚假; };
-
重新定义负责ajax的函数以接受callbackFn作为第二个参数:
function jobexist(jobname,callbackFn){
-
执行ajax-responsible函数时传递回调函数:
jobexist(jobname,afterAjax)
-
当时间正确时执行此回调:
if(data.result == 0){ callbackFn(); }