2010-11-11 131 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