我似乎正在尝试将附加参数传递回我为成功的ajax调用创建的成功回调方法,但这似乎是徒劳的。一点背景知识。我有一个包含许多动态创建的文本框/选择框对的页面。每一对具有动态分配的唯一名称,诸如唯一对1_txt-url和唯一对1_name=,则第二对具有相同的名称,但是前缀不同。
为了重用代码,我制作了一个回调函数来获取数据和对选择框的引用。但是,当触发回调时,对选择框的引用返回为“undefined”。我在here上读到这应该是可行的。我甚至尝试过利用“context”选项,但仍然一无所获。下面是我尝试使用的脚本块:
<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的具体版本,但我可以接受。这是我的最终代码,适用于训练中的任何忍者(也是我未来的参考):
<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>
发布于 2013-09-06 20:12:36
这就是我所做的,它也运行得很好:
$.ajax('URL', {
myCustomControl: selectBox,
myCustomVariable: 'teste',
data:
{
myData: 1
},
success: function (data, textStats, jqXHR) {
myFunction(data, textStats, jqXHR, this.myCustomControl, this.myCustomVariable);
}
});
您可以向ajax调用的参数中添加控件和变量。
发布于 2010-04-09 08:02:54
将其放入您的$.ajax参数中。
invokedata: {
data1: "yourdata",
data2: "moredata"
}
在success函数中,像这样使用它
this.invokedata.data1;
this.invokedata.data2;
您的$.ajax调用和成功函数也必须是同一对象的一部分。将您的函数放在一个对象中,并像这样定义它们
function myObject {
var getImage = function(..) { }
var loadImagesInSelect = function(..) { }
}
https://stackoverflow.com/questions/2602981
复制相似问题