Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未通过ajax调用设置Javascript全局变量_Javascript_Jquery_Global Variables - Fatal编程技术网

未通过ajax调用设置Javascript全局变量

未通过ajax调用设置Javascript全局变量,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,可能重复: 我正在开发一个CakePHP应用程序,该应用程序利用广泛的对控制器的AJAX调用。我被一个特定的AJAX调用卡住了,在这个调用中,我试图将控制器的响应分配给一个JS全局变量。代码如下: window.errors=”“; 函数设置错误(err){ window.errors=err; } 函数ajaxCall(u、t、d、dt){ var type=typeof t!=“未定义”?t:“post”; var dataType=typeof dt!=“未定义”?dt:“json”;

可能重复:

我正在开发一个CakePHP应用程序,该应用程序利用广泛的对控制器的AJAX调用。我被一个特定的AJAX调用卡住了,在这个调用中,我试图将控制器的响应分配给一个JS全局变量。代码如下:

window.errors=”“;
函数设置错误(err){
window.errors=err;
}
函数ajaxCall(u、t、d、dt){
var type=typeof t!=“未定义”?t:“post”;
var dataType=typeof dt!=“未定义”?dt:“json”;
var成功=false;
var err=“”;
$.ajax({url:url,data:'data=“+d,type:type,dataType:dataType,
成功:功能(d){
如果(d.hasOwnProperty('success')==false){//json响应
对于(vari in d){//从对象获取验证错误
用于(i中的变量j){
if(类型d[i][j]=“未定义”){
继续;
}
err+=d[i][j]+“
”; } }
console.log(err);//是的,您认为
return
语句在成功回调之前运行是正确的。您不能从函数返回结果,因为函数必须在处理成功事件之前返回

将回调添加到
ajaxCall
函数中,并调用该函数,而不是设置success变量:

function ajaxCall(u, t, d, dt, callback) {
  var type = typeof t !== 'undefined' ? t : "post";
  var dataType = typeof dt !== 'undefined' ? dt : "json";
  $.ajax({url: url, data: "data=" + d, type: type, dataType: dataType,
    success: function(d){
      if(d.hasOwnProperty('success') === false) { //json response
        for(var i in d) { //fetch validation errors from object
          for(var j in i) {
            if(typeof d[i][j] === "undefined") {
              continue;
            }
            err += d[i][j] + "<br/>";
          }
        }
        callback(false, err);
      } else {
        callback(d.success === "1", "");
      }
    }
  });
}

感谢您的快速回复!是的,您的解决方案工作得非常好。我使用它的次数越多,就学到了很多新的JS内容(以及它的许多怪癖)。
ajaxCall('https://localhost/users/add', 'post', data, 'json', function(success, err){
  if (success) {
    alert("Registered!");
  } else {
    alert(err);
  }
});