Ajax serialize()表单错误

时间:2014-01-29 23:59:48

标签: php jquery ajax forms

有类似的问题,但我浏览了很多,发现没有准确的答案或修复,请提供解决方案!

我正在把一个表单写到一个页面上,期待一个值回来 - 没什么大不了的。我之前已经完成了一百万次,但现在它只是拒绝为这种形式工作。

表格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 - 这些都是空数组。我已经更改了帖子发送到的页面 - 仍然无效。

有什么想法吗?

3 个答案:

答案 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页面。

如果您有任何问题,请询问。