【问题标题】:jQuery TypeError: 'undefined' is not a function on AJAX submitjQuery TypeError: 'undefined' 不是 AJAX 提交的函数
【发布时间】:2012-02-03 22:32:29
【问题描述】:

有人看到以下问题吗?

jQuery(document).ready(function($) {
    $("#ajax-form").submit(function(e) {
        e.preventDefault();
        $("#result").html('Sending…').fadeIn();
        var fields = '{';
        $('#ajax-form').filter(':input').each(function() {
            fields = fields + $(this).attr("name")+' : '+$(this).val()+', ';
        });
        fields = fields + '}';
        url = '/scripts/form-submit.php';

        $.post(url,fields, function(data, respText, xhr){
            alert('ok-'+data+'-'+respText+'-'+xhr);
        })
        .error(function(d) {
            alert('no good');
        });
    });
});

在 Inspector 中,我在提交时收到以下错误:

TypeError: 'undefined' 不是函数('....error(function(d) {...' 附近)

在关闭 .error (});) 的行上。那是第 17 行。

提交时,我收到一条警报,内容为:“ok--success-[object XMLHttpRequest]”。我提交的脚本应该发送一封电子邮件并返回“它工作”作为 AJAX 响应数据,并且电子邮件永远不会发送,也不会收到响应。我知道该脚本有效,因为当我定期(不是异步)发布它时,它一切正常。

非常感谢任何见解。谢谢。

【问题讨论】:

  • 为什么不使用serialize 而不是手动创建fields
  • 好电话,谢谢。这实际上使服务器脚本工作(发送电子邮件),但我仍然收到 TypeError 错误。知道是什么原因造成的吗?

标签: jquery ajax typeerror .post


【解决方案1】:

使用serialize生成帖子数据

$('#form').submit(function(){
            $.ajax({
                type: "POST",
                url: "/scripts/form-submit.php",
                data: $(this).serialize(),
                success:function(response){
                    alert('ok-'+data+'-'+respText+'-'+xhr);
                    alert("Details saved successfully!!!");
                },
                error: function (request, status, error) {
                    alert(request.responseText);
                }                  
            });
        })

【讨论】:

    【解决方案2】:

    我认为问题出在您的变量fields,这似乎是一个json数据,但是您未能将引号中的值作为字符串包装 这是来自 jQuery 的参考:

    jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] ) ... dataTypeThe type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html)

    它把你的数据类型当作json,但实际上它是无效的

    【讨论】:

    • 谢谢,我改用 serialize() 方法,因为这样更容易。不过,您是对的,字段无效。
    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2013-09-09
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多