如何从jquery GET请求获取返回值?

时间:2010-08-27 08:58:48

标签: 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(data); 
            checkemail = data;
        });

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

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

4 个答案:

答案 0 :(得分:1)

怎么样??

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

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

答案 1 :(得分:0)

您可以将if (check == 1) { ... }代码移到回调中吗?

答案 2 :(得分:0)

这是一个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 */ }

或者您可以使用回调函数来检查数据。回调函数是您在success属性中定义的函数。请求完成后调用此函数。所以你可以做这样的事情:

$.get("bla.aspx", {
    day: "friday"
  },
  function(checkmail) {
    console.log("checkemail: " + checkemail);
    if (checkemail == '1') { /* do something */ }
  }
);

如果/* do something */很长,你可以把它放到一个单独的函数中,然后将函数调用放到get请求中,如下所示:

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
);

答案 3 :(得分:0)

我做了一些这样的代码并且工作正常。

$.get("/url.php", function(reply){
alert(reply);
});

也许你需要检查一下:

  1. bla.aspx会回复一些东西。当错误出现在另一个地方时,调试代码有点荒谬。
  2. 如果bla.aspx确实返回了一些东西。只要确保它不是null或空字符串。
  3. 尝试使用其他页面。也许,只是可能,bla.aspx页面在返回之前消耗了大量时间。这发生在我身上。
  4. 在我看来,您的代码没有任何问题:) 哦,我错过了什么。用alert()语句替换你的函数体是很好的,只是为了确保你没有输入任何错误。如果你已经尝试过这个,请忽略。