2013-02-01 66 views
0

我正在嘗試寫一個實時更新購物車。我試圖在另一個裏面運行一個函數,但只能讓它在重載時工作。我的方法出了什麼問題?ajax函數內的Ajax函數

編輯:我現在編輯從checkKart checkKart();

$(function checkKart() { 
     $.ajax({ 
      type: "GET", 

      url: "checkCart.php", 
      success: function(html) { 

       $("#handlevogn").html(html); 
      } 

     }); 
}); 

function addToCart(product_name, design_name, price, qty) { 
    $.ajax({ 
      type: "GET", 
      url: 'test.php', 
      data: {qty: qty, product_name: product_name, design_name: design_name, price: price}, 
      success: function(data) { 
        alert("Varen er i handlekurven"); 
        checkKart(); 
      } 
      }); 
    return "Varen er i handlekurven"; 

} 
+3

嘗試checkKart(); ? –

+1

至於第一個函數,你應該考慮'$()。load()'。至於第二個函數,也許你應該從回調中調用他的'checkKart'函數。 –

+0

好的。我意識到我在這裏有點太深了。我會閱讀.load()並再試一次。 :) – Studiostefan

回答

1
function checkKart() { 
    $.ajax({ 
     type: "GET", 
     url: "checkCart.php", 
     success: function(html) { 
      $("#handlevogn").html(html); 
     } 
    }); 
}; 

function addToCart(product_name, design_name, price, qty) { 
    $.ajax({ 
     type: "GET", 
     url: 'test.php', 
     data: {qty: qty, product_name: product_name, design_name: design_name, price: price}, 
     success: function(data) { 
      alert("Varen er i handlekurven"); 
      checkKart(); 
     } 
    }); 

    return "Varen er i handlekurven"; 
} 

這應該工作。

不知道爲什麼你有你的第一個函數包裝在$()中。如果你試圖寫一個jQuery插件,正確的語法是這樣的:

(function($) { 
    $.fn.myPlugin = function() { 

    // Do your awesome plugin stuff here 

    }; 
})(jQuery); 

,你可以在此處詳細瞭解http://docs.jquery.com/Plugins/Authoring

+0

謝謝!我試圖抓住語法。這是一個很好的教訓! :) – Studiostefan

1

你的錯誤控制檯應該可以告訴你,checkKart是一個未定義的功能,原因是,作爲書面:

$(function checkKart() { 
    $.ajax({ 
     ... 
    }); 
}); 

你創造了什麼是「命名的函數表達式」,其中名稱是唯一可見該函數,並且名稱不會導出到封閉範圍。

如果您在沒有$(...)包裝的情況下正常定義該功能,則一切都應該起作用。

+0

謝謝!神奇的輸入! – Studiostefan

+0

對不起,但我認爲命名函數表達式就像這樣:'(function(){})()'不是這樣的:'$(...)'?我的參考:[鏈接](http://kangax.github.com/nfe/#named-expr) –

+0

@DeckerWBrower'$(...)'是一個jQueryism,_calls_(命名)函數表達式已經在DOM準備就緒時傳遞給它('...')。 – Alnitak