首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery怎么做??是否将其他参数传递给$.ajax调用的成功回调?

jQuery怎么做??是否将其他参数传递给$.ajax调用的成功回调?
EN

Stack Overflow用户
提问于 2010-04-09 03:54:14
回答 2查看 56K关注 0票数 19

我似乎正在尝试将附加参数传递回我为成功的ajax调用创建的成功回调方法,但这似乎是徒劳的。一点背景知识。我有一个包含许多动态创建的文本框/选择框对的页面。每一对具有动态分配的唯一名称,诸如唯一对1_txt-url和唯一对1_name=,则第二对具有相同的名称,但是前缀不同。

为了重用代码,我制作了一个回调函数来获取数据和对选择框的引用。但是,当触发回调时,对选择框的引用返回为“undefined”。我在here上读到这应该是可行的。我甚至尝试过利用“context”选项,但仍然一无所获。下面是我尝试使用的脚本块:

代码语言:javascript
复制
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
    $j.ajax({
        type: "GET",
        url: $j(urlValue).val(),
        dataType: "jsonp",
        context: selectBox,
        success:function(data){
         loadImagesInSelect(data)
        } ,
        error:function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }

    });
}

function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
    var theValue = $j(this)[0]["@value"];
    var theId = $j(this)[0]["@name"];
    select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);

}    
</script>

根据我所读到的,我觉得我已经很接近了,但我就是不能把手指放在缺失的环节上。请以典型的忍者隐形方式提供帮助。提亚

*更新*尼克是一个真正的忍者。他们应该为此发明一种新的徽章!他下面的回答起到了作用。正如他提到的,它是1.4的具体版本,但我可以接受。这是我的最终代码,适用于训练中的任何忍者(也是我未来的参考):

代码语言:javascript
复制
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
    $j.ajax({
        type: "GET",
        url: urlValue+ '?callback=?',
        dataType: "jsonp",
        context: selectBox,
        success: jQuery.proxy(function (data) {
            var select = $j(this);
            select.empty();
            $j(data).each(function() {
                var theValue = $j(this)[0]["@value"];
                var theId = $j(this)[0]["@name"];
                select.append("<option value='" + theId + "'>" + theValue + "</option>");
            });
            select.children(":first").attr("selected", true);
        }, selectBox),
        error:function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });
}
</script>
EN

回答 2

Stack Overflow用户

发布于 2013-09-06 20:12:36

这就是我所做的,它也运行得很好:

代码语言:javascript
复制
$.ajax('URL', {
    myCustomControl: selectBox,
    myCustomVariable: 'teste',
    data:
    {
       myData: 1
    },
    success: function (data, textStats, jqXHR) {
        myFunction(data, textStats, jqXHR, this.myCustomControl, this.myCustomVariable);
    }   
});

您可以向ajax调用的参数中添加控件和变量。

票数 24
EN

Stack Overflow用户

发布于 2010-04-09 08:02:54

将其放入您的$.ajax参数中。

代码语言:javascript
复制
invokedata: {
    data1: "yourdata",
    data2: "moredata"
}

在success函数中,像这样使用它

代码语言:javascript
复制
this.invokedata.data1;
this.invokedata.data2;

您的$.ajax调用和成功函数也必须是同一对象的一部分。将您的函数放在一个对象中,并像这样定义它们

代码语言:javascript
复制
function myObject {
    var getImage = function(..) { }
    var loadImagesInSelect = function(..) { }
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2602981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档