2012-01-06 50 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

相關問題