在发布这篇文章之前,我已经阅读了但是我仍然不清楚如何实现这一目标。 我正在收到一个xml文件并设置一些变量,如何访问ajax成功之外的所有变量以便在其他函数中使用?
$.ajax({
type: "POST",
url: getProductList,
data: reqProductXML,
dataType: "xml",
contentType: "text/xml; charset=\"utf-8\"",
success: function (data) {
$(xml).find('product').each(function () {
var productID = $(this).find('id').text();
var productName = $(this).find('name').text();
var productCurrency = $(this).find('currency').text();
var productDescription = $(this).find('description');
var sipAccess = $(this).find('sipAccess');
var skypeAccess = $(this).find('skypeAccess');
var localAccess = $(this).find('localAccess');
var rechargeable = $(this).find('rechargeable').text();
$('#urProductSelect').append("<option value='" + productID + "'>" + productName + "</option>");
});
}
}); //End ajax
// I need to use the variable out here....
$('#urProductSelect').change(function () {...});
答案 0 :(得分:2)
在一个地方定义变量,使它们在两个函数的范围内, 比如
var productID;
在$ .ajax中使用它们作为
productID = $(this).find('id').text();
答案 1 :(得分:2)
我认为最好创建回调函数:
$.post(site_url+"admin/jx_get_group_attibutes", {product_id:id}, function(rdata) {
if(rdata.status == 'success') {
print_link_products(rdata); // callback function
}
else {
alert(rdata.result);
return false;
}
}, "json");
答案 2 :(得分:1)
您必须处理定义变量的范围,因为您在ajax success
函数中定义了变量,所有变量都属于该范围,因此在该函数之外定义的任何其他函数都会赢得'能够“看到”那些变量,你可以在一个范围内的success
函数之外定义它们,任何其他函数都可以像全局范围一样“看到”它们,但这有点混乱。看看这本书,它将向你展示一些关于范围和闭包的好例子:
答案 3 :(得分:0)
您可以将var productID
更改为window.productID
以使其成为全局。请记住在使用全局变量时要小心,因为命名问题可以发挥作用。
答案 4 :(得分:0)
var productID, productName, productCurrency, productDescription, sipAccess, skypeAccess, localAccess, rechargeable;
$.ajax({
type: "POST",
url: getProductList,
data: reqProductXML,
dataType: "xml",
contentType: "text/xml; charset=\"utf-8\"",
success: function (data) {
$(xml).find('product').each(function () {
productID = $(this).find('id').text();
productName = $(this).find('name').text();
productCurrency = $(this).find('currency').text();
productDescription = $(this).find('description');
sipAccess = $(this).find('sipAccess');
skypeAccess = $(this).find('skypeAccess');
localAccess = $(this).find('localAccess');
rechargeable = $(this).find('rechargeable').text();
$('#urProductSelect').append("<option value='" + productID + "'>" + productName + "</option>");
});
}
}); //End ajax
// I need to use the variable out here....
$('#urProductSelect').change(function () {...});