如何创建jquery ajax作为单独的函数
How to create jquery ajax as separate function?
我想创建一个单独的函数从Facebook图形JSON获取特定的数据。例如,我有load()和调用getNextFeed()函数。
getNextFeed工作正常。除了aString的返回值不成功。当我弹出alert(thisUrl)它说未定义。
注意:我是Javascript和Jquery的新手。请告诉我我哪里做错了。谢谢你。
function load()
{
$(document).ready(function() {
var token = "AccessToken";
var url = "https://graph.facebook.com/me/home?access_token=" + token;
var thisUrl = getNextFeed(url);
alert(thisUrl); // return undefined
});
function getNextFeed(aUrl)
{
$.ajax({
type: "POST",
url: aUrl,
dataType: "jsonp",
success: function(msg) {
alert(msg.paging.next); // return correctly
var aString = msg.paging.next;
alert(aString); // return correctly
return aString;
}
});
}
问题是$.ajax()是一个异步函数,这意味着,当调用时,它在同一个实例中返回,但是ajax调用是在一个单独的线程中完成的。所以$.ajax()的返回值总是未定义的。
您必须使用ajax回调函数来做您需要做的任何事情:基本上您已经正确地完成了它,只是return aString不会返回到原始调用函数。所以你能做的就是在回调函数(success())中调用一个函数,或者直接在success()函数中实现逻辑。
的例子:
function load()
{
$(document).ready(function() {
var token = "AccessToken";
var url = "https://graph.facebook.com/me/home?access_token=" + token;
getNextFeed(url);
alert('Please wait, loading...');
});
function getNextFeed(aUrl)
{
$.ajax({
type: "POST",
url: aUrl,
dataType: "jsonp",
success: function(msg) {
alert(msg.paging.next); // return correctly
var aString = msg.paging.next;
alert(aString); // return correctly
do_something_with(aString);
}
});
}
相关文章:
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 如何使jQuery中的悬停函数单独应用于数据库映像
- “单独列搜索”上的Datatables setinterval函数
- 使用AJAX在单独的文件中调用php函数
- 我将此代码移动到一个单独的函数中,它停止工作,为什么
- 如何在单独的文件中调用函数 js.
- 从单独的类调用活动函数
- window.load上单独的javascript文件中的引用函数
- 此JavaScript函数可以单独使用,但不能与其他JavaScript函数一起使用
- Chained Promise给出了未定义的函数错误,但我可以单独执行这些函数
- 从两个单独的函数创建 JQuery 悬停
- Javascript:类构造函数基础 - 在单独的方法中定义属性
- 添加混合 javascript 函数,使内容淡入列内的另一个内容/使其适用于两个单独的列
- 在一个函数中使用来自两个单独 JSON 文件的数据
- 等待 AJAX,然后再继续执行单独的函数
- AngularJS - '控制器不是函数:单独的控制器文件
- 使用 addEventListener 在 JavaScript 中设置单独的函数参数以具有唯一的 ID
- 如何检查两个单独函数的执行结果
- 使用 jQuery 完成单独函数时执行警报
- 可以将单独函数的数组值组合在一起吗