gpt4 book ai didi

我认为 JavaScript 没有返回值、范围和变量困惑?

转载 作者:行者123 更新时间:2023-11-28 08:34:35 25 4
gpt4 key购买 nike

我正在使用 JQuery 进行 ajax 调用来读取一些 XML 并返回一些数据。我成功找到了我的文件,读取了一些内容,并做了一些警报,并成功找到了我想要的数据。我现在想将此数据返回到调用它的函数,但不确定如何。

这是我的功能:

function getDialogParams(id, folderName) {

var dialogNode; // set variable here to open scope for return statement

$.ajax({
type: "GET",
url: "/" + folderName + "/dialog-params.xml",
dataType: "xml",
success: function (xml) {

alert("champions!"); // runs

$(xml).find('dialog').each(function () {

if ($(this).find('id').text() == id) { // finds my node i want
// runs once
dialogNode = $(this); // seems like im declaring a new variable instead of assigning my variable i instantiated above?
alert("width = " + dialogNode.find('width').text()); // alerts proper width
alert("height = " + dialogNode.find('height').text()); // alerts proper height
return;
}

});
},
error: function () { alert("fail whale!") }
});

alert("width2 = " + dialogNode.find('width').text()); // error dialogNode is undefined, wth, i declared this variable up-scope?
return dialogNode; // should be returning same object as above that alerts correct data
}

然后我像这样使用这个函数:

var params = getDialogParams(515, "AN0500-ASN"); // get param values

我哪里出错了?这是 XML,以防有人想要全部进行调试。

<?xml version="1.0" encoding="utf-8" ?>
<dialogs>
<!-- SHIPMENT SCREEN -->
<dialog>
<id>515</id>
<width>1000</width>
<height>700</height>
</dialog>
<!-- ORDER SCREEN -->
<dialog>
<id>516</id>
<width>900</width>
<height>600</height>
</dialog>
<!-- CARTON SCREEN -->
<dialog>
<id>517</id>
<width>800</width>
<height>500</height>
</dialog>
</dialogs>

最佳答案

好的,谢谢大家。另一篇文章有​​帮助。以下是我的具体案例的答案,如果它可以帮助某人从头到尾看到我的示例。

帖子提供了一些选项,我不完全理解哪个对我来说是最好的解决方案的优缺点,但使用回调函数似乎是我最容易理解的,并且使用与 .done() 不同的方法不起作用,因为它说我的对象不支持该属性或方法。

这是我的功能:

function getDialogParams(id, folderName, callback) {

$.ajax({
type: "GET",
url: "/" + folderName + "/dialog-params.xml",
dataType: "xml",
success: function (xml) {

alert("champions!"); // runs

$(xml).find('dialog').each(function () {
if ($(this).find('id').text() == id) { // finds my node i want
return callback($(this));
}
});
},
error: function () { alert("fail whale!") }
});
}

我这样调用它:

getDialogParams(515, "AN0500-ASN", function (result) {
alert("screen width = " + result.find('width').text());
alert("screen height = " + result.find('height').text());
});

关于我认为 JavaScript 没有返回值、范围和变量困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393674/

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