gpt4 book ai didi

javascript - jQuery get - 使用返回值

转载 作者:行者123 更新时间:2023-12-02 18:30:27 25 4
gpt4 key购买 nike

有一些关于获取 get-call 的返回值的帖子。但我的问题仍然存在。

我的来源

...
$.get("list.svc/XmlTestService", function (XmlData) { console.log(XmlData); }, "xml");
...
alert($Loc['Name']);
...

我在控制台上得到了正确的 XML 文档。通常我必须继续使用 Xml 来做某事。这将在一个单独的函数中完成,如下所示:

function GetOutXml (XmlData) {
...
return { 'Name': ValueName }
}

现在我需要缩小接听电话和警报之间的差距。我尝试了一些不同的事情但没有成功。一种方法是这样的:

...
var $Xml = null;
$.get("list.svc/XmlTestService", function (XmlData) { $Xml = XmlData; }, "xml");
var $Loc = GetOutXml($Xml);
...

但没有成功。我是 JS 世界的新手(仅基础知识)。通常,我使用功能架构构建源代码。

我怎样才能正确地做到这一点?

更新:好吧...我读了很多书后以其他方式解决了我的问题。因为在匿名函数中做所有事情不是我的思维方式,而且随着时间的推移很难阅读和遵循。

所以我做了什么:

...
var $Xml = null;
$.ajax({type:'GET',url:"list.svc/XmlTestService",success: function(Data) { $Xml = Data;},dataType:'xml',async:false});
...
var $Loc = GetOutXml($Xml);
...

重要的一步是使用 ajax 命令来完成这项工作,因为可以将 async 设置为 false,以便它是同步的。

谢谢你帮助我。

最佳答案

Ajax 是异步的——get 调用启动该过程,但稍后结束。因此,调用后的代码在回调中的代码之前运行。 (“回调”是您传递给 get 的函数。“回调”是一个通用术语,指稍后响应某些内容而“回调”的函数。事件处理程序也是回调,尽管很奇怪我们很少这样称呼他们。)

您想要做的实际上是在回调中完成您的工作:

$.get("list.svc/XmlTestService", function (XmlData) {
// Use XmlData here
}, "xml");

这可能看起来很陌生,但很快就会变得非常熟悉。

例如,假设您的代码看起来像这样但不起作用;

// This doesn't work
var a, b;
var $Xml;
a = doSomething();
b = /* ...some other thing... */;
$.get("list.svc/XmlTestService", function (XmlData) {
$Xml = XmlData;
}, "xml");
if (a > b) {
doSomethingWithXml($xml);
}
else {
doADifferentThingWith($xml);
}

它看起来像这样:

// This does work
a = doSomething();
b = /* ...some other thing... */;
doSomething();
$.get("list.svc/XmlTestService", function ($Xml) {
if (a > b) {
doSomethingWithXml($xml);
}
else {
doADifferentThingWith($xml);
}
}, "xml");

关于javascript - jQuery get - 使用返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com