我想做这样的事情:
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变量。为什么不呢?
答案 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);
});
也许你需要检查一下:
在我看来,您的代码没有任何问题:) 哦,我错过了什么。用alert()语句替换你的函数体是很好的,只是为了确保你没有输入任何错误。如果你已经尝试过这个,请忽略。