我希望从任何地方访问变量

时间:2017-11-16 12:50:06

标签: javascript jquery ajax frontend

这里我想访问变量" finalPrice"在另一个功能中,我怎么能做到这一点呢?

  function available(id){
    $.ajax({
        method:"GET",           
    }).done(function(data){        

     for(j=0; j<available_location.length; j++) {

            var finalPrice =available_location[j].price_details.final_price;
   };
});

function razorpay() {      
    $.ajax({
        url : 'http://test4238.wickedride.com//api/cancelledEnquiries/add',
        type : 'GET',
        data : {

         },
        success: function(data){
              alert(finalPrice );
           }
    });
}

3 个答案:

答案 0 :(得分:1)

只需在功能外定义它,然后从var中的最终价格之前移除available();。现在它可以被两个函数访问。

 var finalPrice = 0;

 function available(id){
    $.ajax({
        method:"GET",           
    }).done(function(data){        

     for(j=0; j<available_location.length; j++) {

       finalPrice =available_location[j].price_details.final_price;
   };
});

function razorpay() {      
    $.ajax({
        url : 'http://test4238.wickedride.com//api/cancelledEnquiries/add',
        type : 'GET',
        data : {

         },
        success: function(data){
              alert(finalPrice );
           }
    });
}

答案 1 :(得分:0)

您的finalPrice仅限于available函数,因为它是声明它的位置(var finalPrice)。在Javascript中,如果您希望可以从所有脚本范围访问变量,请将其移到函数外部,直到脚本的开头:

var finalPrice;

function available(id) {
    $.ajax({
          method:"GET",           
    }).done(function(data) {        
       for(j = 0; j < available_location.length; j++) {
           finalPrice = available_location[j].price_details.final_price;
       };
});

function razorpay() {      
    $.ajax({
        url: 'http://test4238.wickedride.com//api/cancelledEnquiries/add',
        type: 'GET',
        data: {
        },
        success: function(data){
           alert(finalPrice );
        }
    });
}

答案 2 :(得分:0)

如果第二个呼叫需要第一个,则使用回调。如果它没有调用两者,并在执行处理之前等待两个答案,即计算finalPrice并使用它。

创建名为finalPrice的全局变量是不好的,因为我非常确定您在 parralel 中运行这两个请求,如果razorpayavailable之前解决,则导致行为不确定。

首例案例

 function available(id, callback) {
  $.ajax({
    method: "GET",
  }).done(function(data) {

    var finalPrice = 0;

    for (j = 0; j < available_location.length; j++) {
      finalPrice = available_location[j].price_details.final_price;
    }

    callback(finalPrice);
  });

  function razorpay(finalPrice) {
    $.ajax({
      url: 'http://test4238.wickedride.com//api/cancelledEnquiries/add',
      type: 'GET',
      data: {

      },
      success: function(data) {
        alert(finalPrice);
      }
    });
  }

  available(id, function(finalPrice) {
    razorpay(finalPrice);
  });