我有这种情况:
$(document).ready(function(){
$("#username-field").keyup(function(event) {
data = [];
data.push( $(this).val() );
$.ajax({
url: 'checkUsername.php',
data: {data:JSON.stringify(data)},
type: 'POST',
dataType: "json",
success: function (data) {
var text = (data.error ? data.error : "");
}
});
});
});
我需要在此函数之外调用此变量,例如:
$(document).ready(function(){
$("#username-field").keyup(function(event) {
data = [];
data.push( $(this).val() );
$.ajax({
url: 'checkUsername.php',
data: {data:JSON.stringify(data)},
type: 'POST',
dataType: "json",
success: function (data) {
var text = (data.error ? data.error : "");
}
});
alert ( text ) // ADDED <--
});
});
有人知道如何构造这个jQuery,所以我可以稍后调用该变量吗?
答案 0 :(得分:1)
尝试$.Deferred:
$(document).ready(function(){
$("#username-field").keyup(function(event) {
var def = $.Deferred(); //Declare
data = [];
data.push( $(this).val() );
$.ajax({
url: 'checkUsername.php',
data: {data:JSON.stringify(data)},
type: 'POST',
dataType: "json",
success: function (data) {
var text = (data.error ? data.error : "");
def.resolve(text); //Resolve
}
});
def.done(function(text){//Add handler
alert(text);
});
});
});
答案 1 :(得分:0)
因为文本是在异步函数中设置的,所以最好使用回调。即一旦接收到并分配了数据,就可以调用另一个函数并在内部执行任何操作。当然,您可以通过定义全局text
变量来执行相同的操作,但如果您遵循此方法,则无法确切知道数据何时可用。
$(document).ready(function(){
$("#username-field").keyup(function(event) {
data = [];
data.push( $(this).val() );
var dataIsHere = function(text) {
data.push(text);
}
$.ajax({
url: 'checkUsername.php',
data: {data:JSON.stringify(data)},
type: 'POST',
dataType: "json",
success: function (data) {
var text = (data.error ? data.error : "");
dataIsHere(text);
}
});
});
});
答案 2 :(得分:-1)
尝试在document.ready函数之外声明一个全局变量文本,然后在
中分配并使用它var text = "";
$(document).ready(function(){
$("#username-field").keyup(function(event) {
data = [];
data.push( $(this).val() );
$.ajax({
url: 'checkUsername.php',
data: {data:JSON.stringify(data)},
type: 'POST',
dataType: "json",
success: function (data) {
text = (data.error ? data.error : "");
}
});
alert ( text ) // ADDED <--
});
});