0

我在客户网站上创建了一个表单,我正在尝试将 AJAX 用于订阅表单。

提交似乎只是重定向而不是序列化表单并使用 AJAX。

我认为这里的问题是它不知道响应数据是否“成功”。可能使用不同的变量来确定它是成功还是错误?无论哪种方式,它都应该相应地向用户显示消息,即:

成功 -> 您已注册。
错误 -> 无效的电子邮件地址。

也应该是输入空白名称的消息,因为它是必填字段,但不确定如何处理该错误..:/

完整的小提琴:http: //jsfiddle.net/pUd5P/6/

形式

<form id="newsletter" action="http://app.bronto.com/public/webform/process/" method="post">
....
</form>

JS

//ajax subscribe
$( document ).ready( function() {
     $("#newsletter").submit( function() {
        //Do the AJAX post
        //alert("submitting");
        alert(data);
        $.post($("#newsletter").attr("action"), 
        $("#newsletter").serialize(), 
        function( data ) {
            //alert(data);
            if ( data == 'success' ) {
                $('#newsletter-message').html('You have been signed up.')
                             .removeClass('error')
                             .css('visibility','visible');
            } else {
                $('#field-error').html('Invalid email address.')
                                 .addClass('error')
                                 .css('visibility','visible');
            }
        });
        //Stop the normal POST
        return false;
    });
});
4

2 回答 2

0

我只是不理解这种行为,但让它发挥作用

http://jsfiddle.net/pUd5P/12/

它正在造成问题,name = sid所以我只是将其更改为 tsid

<input type="hidden" name="tsid" value="37ea72cebcc05140e157208f6435c81b" />

现在它发出了一个ajax请求,你需要在你的服务器上测试它,因为它给出了 Origin is not allowed by Access-Control-Allow-Origin.错误。

于 2013-08-09T08:26:50.230 回答
0

看一下event.preventDefault()

$("#newsletter").submit(function(event) {
    event.preventDefault();
    // rest of your code here.

这将阻止表单以标准方式提交并刷新页面并允许您$.post返回结果。

我可以看到你用过return false,但试试这个(或同样):D

于 2013-08-09T08:19:32.883 回答