2012-01-06 77 views
1

有没有人看到以下问题?jQuery TypeError:'undefined'不是AJAX中的函数提交

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'); 
     }); 
    }); 
}); 

在督察,我得到提交下列错误:

TypeError: 'undefined' is not a function (near '....error(function(d) {...')

上关闭.error(});)就行了。这是第17行。

在提交时,我收到一条警告:“ok--success-[object XMLHttpRequest]”。我正在提交的脚本应该发送一封电子邮件,并返回“它工作”作为AJAX响应数据,并且不会发送电子邮件,也不会收到响应。我知道这个剧本是有效的,因为当我发布时经常(不是异步)发布它,这一切都很完美。

任何洞察力非常赞赏。谢谢。

+2

为什么不使用[serialize](http://api.jquery.com/serialize/)而不是手动创建'fields' – diEcho 2012-01-06 06:00:30

+0

好的电话,谢谢。这实际上使服务器脚本工作(电子邮件发送),但我仍然收到TypeError错误。任何想法是什么原因? – BBB 2012-01-06 06:28:38

回答

6

使用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); 
       }     
      }); 
     }) 
+0

谢谢!这工作。 – BBB 2012-01-06 07:04:31

1

我认为问题出在变量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,但实际上它是我无效

+0

谢谢,我把它切换到使用serialize()方法,因为这很容易。不过,你说得对,田地是无效的。 – BBB 2012-01-06 09:42:07

相关问题