jquery - Uncaught TypeError: Illegal invocation when using $.post but not $.ajax
问题描述
我正在尝试使用 FormData 将数据发布到另一个 url,以下代码不起作用
$("form").on("submit", function(e){
e.preventDefault();
var formData = new FormData(this);
//var formData = new FormData($(this)[0]); Tried this
$.post('myphpfile', formData, function(data){alert(data)});
});
但以下 $.ajax 有效
$("form").on("submit", function(e){
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: "myphpfile",
type: 'POST',
data: formData,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
});
我习惯了$.post,那么$.post 中的上述函数的等价物是什么。
解决方案
$.post 需要字符串或普通对象作为数据参数。因此,您可以将 stringify 用于您的表单数据,如下所示:
$.post('myphpfile', JSON.stringify(formData), function(data){alert(data)});