2012-07-20 69 views
2

这是我的函数,它返回一个人的名字。如何从done()函数内的.ajax请求中访问返回的值

function getName(ID){ 
    return $.ajax({ 
     url:url, 
     data: ID, 
     type: 'get', 
     dataType: 'json' 
    }); 
} 

这里是我尝试使用.done()函数的地方。

getName("1").done() // How do I ref the returned var in our done function? 

我很困惑如何引用我的getName函数在我的done函数中返回的值。

我知道我可以做到这一点使用成功:在.ajax,但我试图离开,并使用延期对象。

谢谢!

回答

1

它看起来很像完成需要一个回调函数,该函数使用从请求中收到的数据的参数。 http://api.jquery.com/jQuery.ajax/

getName("1").done(function(response) { 
    alert(response); 
}); 
+0

啊,我想实际上做这样的事情 getName(“1”)。done(buildRow(nameReturned));所以我必须使用匿名函数? – 2012-07-20 23:51:18

+0

我想你可以使用任何带有1个参数的函数'buildRow(nameReturned){}'应该可以正常工作。 'getName(“1”)。done(buildRow(nameReturned))' – dm03514 2012-07-20 23:52:21

+0

好的,所以我们通过done()函数中的任何名称引用getName()返回的值?我可能会误解,但这似乎有点奇怪。 – 2012-07-20 23:55:03

1

这是正确的,在the documentation

//Example: Save some data to the server and notify the user once it's complete. 
$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: { name: "John", location: "Boston" } 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

//Example: Retrieve the latest version of an HTML page. 
$.ajax({ 
    url: "test.html", 
    cache: false 
}).done(function(html) { 
    $("#results").append(html); 
}); 

此外,请务必阅读this,因为,根据不同的数据类型,你可能实际上是“收到”不是一个简单的字符串/ ID,但可能一个对象从JSON/XML结果解析或...

+0

那么,我在我的例子中返回JSON – 2012-07-21 00:35:38

+0

然后添加一个'console.log(myvar);'所以你可以检查'myvar '(假设你命名为myvar参数),然后你可以钻入'myvar'中,看看它有哪些属性/你需要哪个属性等等。你可以通过按'Ctrl-Shift- J' in Chrome或'F12' in Explorer。 – RobIII 2012-07-21 00:37:42

+0

感谢Roblll,这很有帮助。我仍然找不到很多关于我们是否可以执行getFoo()。done(getBar(response))的文档;当我得到一个“响应未定义“。我可以做getFoo()。done(function(response){getBar(response)}); - 它只是不干净:p – 2012-07-21 02:41:34