スコープ外の$ .ajax成功変数にアクセスして関数で使用するには?

これを投稿する前に私は読んだことがありますが、これを達成する方法はまだ分かりません。 私は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("");
        });
    }
}); //End ajax

   //I need to use the variable out here....
   $('#urProductSelect').change(function() {...});
3

5 答え

ある場所で変数が両方の関数の範囲内にあるように変数を定義し、 といった

var productID;

$ .ajaxの中に

productID = $(this).find('id').text();
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
追加された

すべての変数がそのスコープに属するajax success 関数内で変数を定義しているので、その関数の外で定義された他の関数は、その変数を "見る"ことができれば、スコープ内で success 関数の外で定義することができ、他の関数はグローバルスコープのように "見る"ことができますが、 。この本を見て、スコープとクロージャについての良い例を紹介します:

http://jqfundamentals.com/book/index.html#example-2.44

1
追加された
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("");
        });
    }
}); //End ajax

   //I need to use the variable out here....
   $('#urProductSelect').change(function() {...});
0
追加された

たとえば、 var productID window.productID に変更してグローバルにすることができます。命名の問題が出現するようにグローバル変数を使用する際は注意してください。

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript