【问题标题】:jQuery: jquery form plugin syntax?jQuery:jQuery 表单插件语法?
【发布时间】:2026-02-06 16:20:05
【问题描述】:

我正在使用带有jquery form plugin 的jquery。 我阅读了一堆帖子、文档等,但我仍然对我认为简单的东西感到困惑。我有一个带有一些简单文本输入和几个文本区域的表单,我有这个链接,我想触发将该表单提交到特定方法(/电子邮件):

<a id="email-data">Send Email</a>

文档中的这个 jquery 准备好了:

$('#email-data').click(function() {
    var options = {
        url: '/email/',
        success: alert('Email sent.')
    };
    $('#report-giftcard-sales-form').ajaxSubmit(options);   
});

所以我希望它提交到我的 /email 方法,但没有这样的运气。目前我只有 /email 方法记录调试消息,所以它尽可能简单。

非常感谢任何帮助。

【问题讨论】:

  • 是否“已发送电子邮件”。提交表单后显示警告消息?
  • @antyrat:对不起,应该提到,是的,它会正确提醒。
  • 也许您的重写规则无法识别 url 的最后一个斜杠?您是否尝试设置 url: '/email', ?
  • @antyrat:不,重写规则没问题,我可以通过 URL 直接在浏览器中访问它来触发方法:localhost/email
  • 我想我明白了。我在 中的 jquery.js 之前加载 jquery.form.js

标签: jquery ajax forms jquery-plugins


【解决方案1】:

来自success 选项的回调无法提醒,因为它在回调函数中需要多个参数。你需要这样写:

$('#email-data').click(function() {
    var options = {
        url: '/email/',
        success: formSended
    };
    $('#report-giftcard-sales-form').ajaxSubmit(options);   
});
function formSended(responseText, statusText, xhr, $form) {
  alert('Email sent.Status: '+statusText);
}

【讨论】:

  • @antyrat:是的,我也尝试过这种方式。我没有收到警报,并且该方法没有发布。我知道这不是语法错误,因为页面上的其他 js 都很好。
  • 当我将 +statusText 添加到警报消息时,它是'未定义'
  • 您在回调函数中添加 statusText 到警报还是在警报的选项中?你有活生生的例子吗?
  • 我通过复制您的示例在回调函数中添加了 statusText。我没有直播,抱歉 :( 绝对没有打到 /email 方法。
  • 你用的是firebug还是其他JS调试器?
【解决方案2】:

在这里回答我自己的问题...

嘿,笨蛋,是的,你(又名我),你需要在加载 jquery 插件之前加载 jquery!

(我当然知道这一点。有时,当你工作太快时,就会发生愚蠢)

好例子:

<script type="text/javascript" src="/js/jquery.min.js"></script> 
<script type="text/javascript" src="/js/jquery.form.js"></script>

【讨论】: