2010-08-27 753 views
1

我愿做这样的事情:如何从jquery GET请求获取返回值?

function blabla(); 

    var check = blabla(); 
    if(check == 1) 

但在我布拉布拉功能我有一个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变量。为什么没有?

回答

0

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

+0

但是,我必须在回调中有100行代码。我觉得这很可笑。 – Jaffa 2010-08-27 09:01:46

+0

比你可以将代码移动到一个单独的功能,如john_doe,我建议。 – jigfox 2010-08-27 09:33:09

1

...怎么样?

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

$.get("bla.aspx", 
     { day: "friday" }, 
     function(data) { 
      console.log(data); 
      checkMail(data); 
     } 
); 
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 
); 
0

我做了这样的代码,它工作正常。

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

也许你需要检查是否:

  1. bla.aspx不会返回的东西。这是一种荒谬的调试你的代码,而错误在另一个地方。
  2. 如果bla.aspx确实返回了一些内容。只要确保它不是null或空字符串。
  3. 尝试另一页。也许,也许,bla.aspx页面在返回一些东西之前会消耗很多时间。这发生在我身上。

在我看来,没有什么是你的代码错了:) 哦,我错过了什么。用alert()语句替换你的函数体是很好的,以确保你不会输入任何错误。如果您已经尝试过,请忽略。