javascript - jquery函数访问本地javascript变量

标签 javascript jquery local-variables

刚接触 jQuery,遇到简单但令人困惑的问题。哈2。

我正在使用读取 xml 文件的 jQuery 函数编写这个普通的 javascript 函数。如何为顶部声明的 prodPrice 变量赋值?脚本不断返回 0 值,但如果我在 jQuery 函数中提醒该值,我就会设法获得我想要的值。

谢谢大家。

function getPrice(valprodID)
{
    var prodPrice=0;

    jQuery.ajax({
        type: "GET",
        url: "products.xml",
        dataType : "xml",
        success : function(xml)
        {
            jQuery(xml).find('prod').each(function(){
                var prodID = jQuery(this).find('prodID').text();
                if(prodID == valprodID)
                {
                    prodPrice = jQuery(this).find('prodPrice').text(); 
                    return false;
                }
            });                
        }
    })

    return prodPrice;
}

最佳答案

这是因为 $.ajax 是异步执行的。

这是您学习如何使用 $.Deferred

的绝佳机会
function getPrice(valprodID)
{
    var prodPrice=0;

    return jQuery.ajax({
        type: "GET",
        url: "products.xml",
        dataType : "xml"
    }).pipe(function(xml)
        {
            jQuery(xml).find('prod').each(function(){
                var prodID = jQuery(this).find('prodID').text();
                if(prodID == valprodID)
                {
                    return jQuery(this).find('prodPrice').text(); 
                }
            });                
        });
}

现在您可以这样调用 getPrice() 函数:

getPrice(someid).done(function(prodPrice) {
    // do what you need with prodPrice 
});

这是 jsfiddle 的示例:http://jsfiddle.net/zerkms/9MgsX/1/

关于javascript - jquery函数访问本地javascript变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10925271/

相关文章:

javascript - polymer Shadow dom 元素的基于类的 CSS 样式

javascript - 使用 jquery 地址或至少使用 ajax 时出现另一个 IE 错误 : stack overflow at line 0,

javascript - jquery 文本字段无法隐藏()

javascript - 为什么局部变量会杀死我的全局变量?

Python局部变量被修改但最后没有显示

javascript - 是否可以在创建屏幕截图之前使用 Puppeteer 修改 DOM 中的元素?

javascript - 等待 Angular2 在属性更改后呈现

javascript - 每 250 毫秒发出一次值,类似于 debouceTime() 但没有延迟

jquery - 在嵌套数据表中拖放

ruby - 在 Ruby 中取消定义变量