2010-11-11 121 views
0

我有一個頁面,需要使用$ .post(),但由於某些原因,確切的代碼工作時,我從螢火蟲控制檯運行它,但不是從我的腳本?我的腳本是:JQuery發佈不在文檔中工作,但在控制檯中工作?

$(document).ready(function() { 
    $('#dl_btn').click(function() { 
     $.post(
      "news_csv.php", 
      $("#dl_form").serialize(), function (data) { 

      alert('error'); 

      if (data == 'success') { 
       alert('Thanks for signing up to our newsletter'); 
       window.open("<?php echo $_GET['link']; ?>"); 
       parent.Shadowbox.close(); 
      } else { 
       alert(data); 
      } 
     }); 
    }); 
}); 

它不像,它得到正確打印鏈接,但它給了我對jQuery的分鐘140行的錯誤,我已經使用不同版本的jQuery和無濟於事試過。我真的不明白爲什麼這不起作用。

當我從$ .post更改爲$ .ajax並使用錯誤回調函數時,我確實收到錯誤'error',錯誤是未定義的?

不要以爲任何人有什麼想法?將不勝感激。

感謝,

湯姆

回答

0

是您的單擊按鈕放置到表單元素裏?

因爲這樣做,點擊它不僅會觸發您綁定到的onClick事件,而且也會提交表單,所以當瀏覽器同時執行兩個請求時會產生結果 - 帶有不可預測的結果, 當然。

我嘗試了一個不觸發表單提交的元素的相同代碼,它按預期工作。

但有一點:如果您打算使用簡單的字符串作爲返回值並對其執行某些操作(顯示它),則可以立即執行您的操作。但是,如果您有更復雜的ajax請求響應,則應該指定響應類型(xml,json ..)作爲post方法的最後一個參數。

希望這會有所幫助。

+0

啊哈,一旦我把按鈕從表單上運行正常,ajax調用被中止,因爲頁面被重新加載,我甚至沒有注意到!非常感謝你! – 2010-11-11 13:34:38

+0

但它只是一個窗體內的按鈕元素,爲什麼它會觸發表單提交,因爲我認爲只會觸發onclick事件? – 2010-11-11 13:35:23

+0

您需要在點擊時返回false。這將覆蓋可能提交表單的'事件的行爲。如果你必須爲你的表單啓用JS,那麼'action =「」'是最安全的,但是如果JS可以被禁用,那麼只留下'action' – Gutzofter 2010-11-12 00:09:59

相關問題