有类似的问题,但我浏览了很多,发现没有准确的答案或修复,请提供解决方案!
我正在把一个表单写到一个页面上,期待一个值回来 - 没什么大不了的。我之前已经完成了一百万次,但现在它只是拒绝为这种形式工作。
表格html:
<form class="selectClaimType" action="place.php" method="post">
<select id="claimtype" name="claimtype">
<option value="privatebuilding">Private Building</option>
<option value="communalbuilding">Communal Building</option>
<option value="outside">Stored Outside</option>
</select>
<input type="submit" id="submit2" name="submit2" class="button" value="save"/>
</form>
jQuery的:
$('form.selectClaimType').on('submit',function(e) {
console.log('found');
$form = $(this);
console.log($form.serialize());
e.preventDefault();
$.ajax({
url: "place.php", //$form.attr('action'),
type: "post", //$form.attr('method'),
data: $form.serialize(),
success: function(data) {
console.log(data);
if (data == 1) {
console.log('hello');
}
else {
console.log('failure to change claim type'+data);
}
},
data: function(data) {
console.log('error ajaxing'+data);
}
});
});
表单不是动态创建的,正如您所看到的,我对所有内容都有console.log(ged)。所以我知道form.serialize()正在工作(值按预期显示)。我省略了要测试的preventDefault(),并且get值是正确的。 我尝试过脚本,html,文本,xml和json的dataTypes - 没有成功。
我在发布到页面上有一个$ _REQUEST和$ _POST的var_dump - 这些都是空数组。我已经更改了帖子发送到的页面 - 仍然无效。
有什么想法吗?
答案 0 :(得分:0)
也许它失败了。您是否添加了fail()回调以查看是否从中获得任何输出。也许错误是您提交的地方。
答案 1 :(得分:0)
data: $form.serialize(),
....
data: function(data) {
console.log('error ajaxing'+data);
}
可能是冲突 ......可能意味着error:
?
答案 2 :(得分:0)
这不能回答你的问题,但也许它可以解决你的问题。
new FormData(form)
是发送表单的新本机方式。(包括文件)
检查纯javascript方式以使用xhr2发送表单。
支持所有现代浏览器,包括移动设备和IE10
function ajax(a,b,e,d,c){
c=new XMLHttpRequest;
c.onload=b;
c.open(e||'get',a);
c.send(d||null)
}
// Url,callback,method,formdata or {key:val},placeholder
发送整个表单
var form=document.getElementsById('myForm');
form.onsubmit=function(e){
e.preventDefault();
ajax('submit.php',SUCCESSFunction,'post',new FormData(this));
}
更多信息
https://stackoverflow.com/a/20476893/2450730带有工作副本&amp;过去的php页面。
如果您有任何问题,请询问。