Javascript ajax jquery post,服务器未接收任何表单数据
我有一个id为ajaxform的表单。如果我发送一个数据为formData={id:'something'}的ajax请求;,一切正常,服务器以POST方式获取数据。但是如果我发送数据为formData=$this.serialize;的ajax请求;,服务器未接收任何数据 请参见下面我的ajax代码Javascript ajax jquery post,服务器未接收任何表单数据,javascript,jquery,ajax,post,Javascript,Jquery,Ajax,Post,我有一个id为ajaxform的表单。如果我发送一个数据为formData={id:'something'}的ajax请求;,一切正常,服务器以POST方式获取数据。但是如果我发送数据为formData=$this.serialize;的ajax请求;,服务器未接收任何数据 请参见下面我的ajax代码 $("#ajaxform").submit(function(e){ e.preventDefault(); // avoid to execute the act
$("#ajaxform").submit(function(e){
e.preventDefault(); // avoid to execute the actual submit of the form.
// add loading image to div
$('#ajaxchanger').html('<?php echo __('loading...'); ?>');
//var formData = {id: 'something'}; // if I call the ajax with this data instead the next line, it works!
var formData = $(this).serialize();
var formURL = $(this).attr("action");
$.ajax({
type: "POST",
cache: false,
dataType: "html",
data: formData,
processData: true,
url: formURL,
success: function (data, textStatus, jqXHR) {
// replace div's content with returned data
$('#ajaxchanger').html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("An error occurred: " + jqXHR.responseText.message);
console.log(jqXHR);
}
});
});
有什么想法吗?因为。序列化将一组表单元素编码为字符串以供提交。默认情况下,$.ajax使用GET datatype提交数据。假设你有一个字符串名=你的名字和电子邮件=youremail@example.comurl为//example.com/request\u handler,那么您的url随GET方法变为:
http://example.com/request_handler?name=yourname&email=youremail@example.com
根据GET方法,它工作得非常完美
对于POST,它是相同的,因为根据文档,它将表单元素设置为字符串。因此,POST数据类型将无法与.serialize一起使用。要进行更深入的调试,请查看浏览器控制台中的请求。以下行有一个PHP错误
$('#ajaxchanger').html('<?php echo __('loading...'); ?>');
变化无常
$('#ajaxchanger').html('<?php echo __("loading..."); ?>');
我测试了代码,结果很好
使用语法感知编辑器。您可以避免这种语法错误。尝试$ajaxform.serialize;而不是$this.serialize;还要确保在输入字段中需要name属性。否则他们就被忽略了,总是一样的问题。每个输入字段都有一个name属性。谢谢jogesh_-pi。但是,您知道如何使用ajax请求将表单数据作为post数据发送吗?@FishWave将字符串划分为对象,并将其发送到表单,如数据:{name:yourname,email:youremail@example.com}是的,谢谢。我有这个想法。但是我希望对于表单中的所有输入有一个更通用的解决方案,jquery代码可以用于我的所有表单,而不仅仅是特定的表单。@FishWave您在服务器端使用PHP吗?是的。如果服务器能够接收post数据,服务器端的一切都可以正常工作。是的,你部分是对的。如果我换线,问题仍然存在。但是如果我把这句话注释掉,那么一切都很好。非常感谢。现在,我明白了!正如k·阿比所说,这是上面的一行。关键是,在那一刻,当我设置加载…,表单不再存在,但是ajax还没有启动。因此,ajax没有数据,因为不再有表单。。。