2012-02-09 2 views
1

я заметил, когда выкладываете данные формы в формате JSON, что следующий не работает:

$.ajax({ 
    type: "POST", 
    url: url, 
    data: JSON.stringify(formData), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     // TODO: Listen for server ok. 
     alert(msg); 
     } 

Но это работает:

$.post(url, 
     JSON.stringify(formData), 
     function(msg) { 
     // TODO: Listen for server ok. If this is successfull.... clear the form 
     alert(msg); 
     }, 
     "json"); 

Это это просто любопытство, но кто-нибудь знает почему? Есть ли какая-то причина использовать одну, а не другую?

ответ

6
  • $ .post предназначен только для выдачи HTTP POST запросы. Внутренне это использует $ .ajax со специальным набором параметров.
  • $ .ajax может быть использован для сделать любой вид запроса HTTP с большей гибкостью

Смотрите также: http://api.jquery.com/jQuery.post/

$ .post эквивалентен:

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

Таким образом, единственная разница в вызове метода - это contentType. Это означает, что вы пытаетесь сравнить два вызова метода с различным набором параметров в основном.

Смежные вопросы