var userIdD = $.get('http://someurl.com/options.php', function(abc) {
var abc = $(abc);
var link = $(abc).find('a:contains(View My Profile)');
//console.log (link);
var userID = $(link).attr('href');
var userId = $(userID);
console.log(userId);
console.log(userID);
});
console.log(userIdD);
console.log(userId);
我不能开始使用变量“userIdD”& “userId”在函数“abc”之外。 在它内部,它工作得很好。 有人可以帮我在外面使用它们吗?哪里我错了?
答案 0 :(得分:0)
在函数外声明变量:
var userID, userId;
var userIdD = $.get('http://someurl.com/options.php', function(abc) {
var abc = $(abc)
var link = $(abc).find('a:contains(View My Profile)')
//console.log (link)
userID = $(link).attr('href');
userId = $(userID)
console.log(userId)
console.log(userID)
})
console.log(userIdD)
console.log(userId)
答案 1 :(得分:0)
问题是userIdD
设置为异步。函数调用中发生的事情发生在之后函数调用之外的东西。
以下是您可以运行的简化示例:
$.get('http://jsonplaceholder.typicode.com', function(){
alert('Stuff inside function happening');
});
alert('Stuff outside function happening');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
现在,如果我们查看您的代码,我们会看到您正在尝试在函数调用中 中设置的console.log变量。
要绕过异步,你可以利用承诺。让我们来看看它是如何工作的......
var valuesPromise = $.get('http://jsonplaceholder.typicode.com').then(function(serverResponse){
return { objectId: 123 }; // return stuff you want to use later
});
// later in your code, you can make use of the returned value...
valuesPromise.then(function(returnedValue){
alert(returnedValue.objectId); // alerts '123'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>