2017-02-10 106 views
0

我有一個單選按鈕,然後確定選擇哪一個。結果將不會保存到AJAX調用後的變量 - CodeIgniter

我打電話給我的家庭控制器和我的家庭控制器我有一個if語句。 if語句然後指向我的模型,它從數據庫返回一個數字。

當我回顯/控制檯在AJAX中登錄時,會出現該號碼。雖然我需要提取該號碼並將其作爲運費收入我的代碼中。

當我這樣做的回報$航運沒有得到返回

在另一部分,我需要調用它像:$運費= $這個 - > shipping_zones();

它有沒有存在的原因?

AJAX

function Shipping_SelfFull(selforfull) { 

    var self_full = selforfull.value; 
    var url = ""; 

    if (self_full == 'self') { 
    url = base_url+'index.php/home/shipping_zones/self'; 
    console.log('you chose self'); 
    update_calc_cart(); 

    } else if (self_full == 'full') { 
    url = base_url+'index.php/home/shipping_zones/full'; 
    console.log('you chose full'); 
    update_calc_cart(); 

    } 

    $.ajax({ 
    url: url, 
    success: function(html){ 
     var shipping = html; 
     console.log(html); 
    } 
    }); 
} 

控制器

<?php 
function shipping_zones($para1=""){ 
    $shipping = ''; 

    if ($para1 == 'self') { 
    $shipping = $this->crud_model->shipping_based_on_zones('self'); 
    echo $shipping; 
    return $shipping; 
    } 

    if ($para1 == 'full') { 
    $shipping = $this->crud_model->shipping_based_on_zones('full'); 
    echo $shipping; 
    return $shipping; 
    } 
    return $shipping; 
} 
?> 

模型

<?php 
// Shipping Based On Zones 
function shipping_based_on_zones($para1=""){ 

    if ($this->session->userdata('user_login') == "yes") { 
    $current_user_id = $this->session->user_id; 
    $user_membership_level = $this->db->query("SELECT * FROM user WHERE user_id='$current_user_id'")->row()->membership_level; 
    $user_country = $this->db->query("SELECT * FROM user WHERE user_id='$current_user_id'")->row()->country; 
    $country_zone_result = $this->db->query("SELECT * FROM country_zones WHERE country LIKE '%\"$user_country\"%'"); 
    } 

    if ($user_membership_level == '1') { 
    if ($para1 == 'self') { 
     return $country_zone_result->row()->vip_self_shipping; 
    } elseif ($para1 == 'full') { 
     return $country_zone_result->row()->vip_full_shipping; 
    } 
    } 


    if (($user_membership_level >= '2') && ($user_membership_level <= '5')) { 
    if ($para1 == 'self') { 
     return $country_zone_result->row()->member_self_shipping; 
    } elseif ($para1 == 'full') { 
     return $country_zone_result->row()->member_full_shipping; 
    } 
    } 
} 
?> 
+0

這是你的全部代碼嗎?如果有的話,沒有數據通過ajax調用發送?使用''data:{}' –

+0

可能你需要在控制器中回顯json_encode你的返回數據,如 return json_encode($ shipping); – khushi

+0

不,我的意思是在AJAX中,我將控制檯記錄結果。結果將顯示。雖然我需要將結果保存在家庭控制器中,然後將其顯示在其他地方 – D12L12

回答

0

AJAX請求尚未完成後,記得ajax是異步的。解決它的一種方法是強制它同步。隨着在你的Ajax被說嘗試使用

異步:假

是這樣的:

$.ajax({ 
    url: url, 
    async: false, 
    success: function(html){ 
    alert(html); 
    var shipping = html; 
    console.log(html); 
    } 
}); 

爲我的作品就好了。希望能幫助到你!

+0

我累了不行。事情是從家庭控制器我需要它來存儲變量,然後在另一段代碼中我需要調用這個函數的東西,但沒有任何東西被回叫 – D12L12