Javascript 如何从jquery get请求中获取返回值?

Javascript 如何从jquery get请求中获取返回值?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想这样做: function blabla(); var check = blabla(); if(check == 1) 但是在我的blabla函数中,我有一个Get请求和一个回调,但无法将返回值设置为blablas返回值 var checkemail = 0; $.get("bla.aspx", { day: "friday" }, function(data) { console.log(dat

我想这样做:

  function blabla();

  var check = blabla(); 
  if(check == 1) 
但是在我的blabla函数中,我有一个Get请求和一个回调,但无法将返回值设置为blablas返回值

var checkemail = 0; 
    $.get("bla.aspx", {
        day: "friday"
    },
        function(data) {
            console.log(data); 
            checkemail = data;
        });

console.log("checkemail: " + checkemail);
if (checkemail == '1') {

问题是数据变量没有分配checkemail变量。为什么不呢

能否将
if(check==1){…}
代码移到回调中?

能否将
if(check==1){…}
代码移到回调中?

关于

function checkMail(data) {
   if (data == '1') {
      ...
   }
}

$.get("bla.aspx",
      { day: "friday" },
      function(data) {
          console.log(data); 
          checkMail(data);
      }
);
那……呢

function checkMail(data) {
   if (data == '1') {
      ...
   }
}

$.get("bla.aspx",
      { day: "friday" },
      function(data) {
          console.log(data); 
          checkMail(data);
      }
);

这是一个AJAX请求,A代表异步,这意味着您的代码不会停止并等待响应,除非您这样说
$.get
只是
$.ajax
的包装器。如果希望请求同步,则需要使用
$.ajax
,如下所示:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);
也可以使用回调函数检查数据。回调函数是您在success属性中定义的函数。此函数在请求完成后调用。因此,您可以这样做:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);
如果
/*do something*/
很长,您可以将其放入单独的函数中,然后将函数调用放入get请求,如下所示:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);

这是一个AJAX请求,A代表异步,这意味着您的代码不会停止并等待响应,除非您这样说
$.get
只是
$.ajax
的包装器。如果希望请求同步,则需要使用
$.ajax
,如下所示:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);
也可以使用回调函数检查数据。回调函数是您在success属性中定义的函数。此函数在请求完成后调用。因此,您可以这样做:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);
如果
/*do something*/
很长,您可以将其放入单独的函数中,然后将函数调用放入get请求,如下所示:

var checkemail = 0; 
$.ajax({
  async: true,
  url: "bla.aspx",
  data: {day:"friday"},
  dataType: text,
  success: function(data){
    console.log(data);
    checkmail = data;
  }
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);
var do_something = function(checkmail) {
  console.log("checkemail: " + checkemail);
  if (checkemail == '1') { /* do something */ }
}

$.get("bla.aspx", {
    day: "friday"
  },
  do_something // note the missing `()`, it must be like this
);

我做了一些这样的代码,效果很好

$.get("/url.php", function(reply){
alert(reply);
});
也许您需要检查是否:

  • bla.aspx确实返回了一些东西。当错误出现在另一个地方时,调试代码有点可笑
  • 如果bla.aspx确实返回了一些东西。只要确保它不是null或空字符串
  • 尝试另一个页面。可能,只是可能,bla.aspx页面在返回某些内容之前会占用很多时间。这件事发生在我身上
  • 在我看来,您的代码没有问题:)
    哦,我错过了一些东西。最好用alert()语句替换函数体,以确保不会出现任何键入错误。如果您已经尝试过,请忽略。

    我编写了一些类似的代码,效果很好

    $.get("/url.php", function(reply){
    alert(reply);
    });
    
    也许您需要检查是否:

  • bla.aspx确实返回了一些东西。当错误出现在另一个地方时,调试代码有点可笑
  • 如果bla.aspx确实返回了一些东西。只要确保它不是null或空字符串
  • 尝试另一个页面。可能,只是可能,bla.aspx页面在返回某些内容之前会占用很多时间。这件事发生在我身上
  • 在我看来,您的代码没有问题:)
    哦,我错过了一些东西。最好用alert()语句替换函数体,以确保不会出现任何键入错误。如果您已经尝试了此操作,请忽略。

    但是我必须在回调中包含大约100行代码。我认为这很难看。你可以将代码移动到一个单独的函数中,就像john_doe和我建议的那样。但是我必须在回调中有大约100行代码。我觉得这很难看。你可以把代码移动到一个单独的函数,就像我和john_doe建议的那样。