漆黑天使复活
2016-03-06 08:49
采纳率: 71.1%
浏览 2.3k

ajax 获取表单内容然后传递PHP

我之前一直在用DOM通过js提取表单内容给PHP做处理,其实也就相当于没用form。。

后来form的内容越来越多了,通过一个个getElementById来获取表单内容然后给PHP越来越不现实了

我在想能不能通过form原本的POST方式(或者有别的方式?)直接将表单内容变成数组,然后js获取数组之后在传递给后台PHP,然后PHP在解析数组做处理,这样做ajax?

可能以上描述不是很专业,忘大神谅解,非常感谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 刘滔滔 2016-03-07 03:55
    已采纳

    Sample

    ....

    Jquery

    $.ajax({
    type: "POST",
    url: 'url.php',
    data: $('#frmSubmit').serialize(),
    success: function (data) {
    // your codes
    }
    });

    PHP
    与原有form POST 处理没区别。

    点赞 评论
  • yeskpd 2016-03-06 08:58

    看这里http://www.w3school.com.cn/jquery/ajax_serialize.asp 要使用jQuery前端框架哦

    点赞 评论
  • 设置表单的target为隐藏iframe的name值,将表单提交到隐藏iframe来模拟ajax无刷新操作,或者倒入jquery框架,调用serialize方法即可将表单序列化为键值对字符串。

    或者自己遍历表单也行

    
    
            function serializeForm(f) {//参数f为表单这个DOM对象
                var params = '', tmp;
                for (var i = 0; i < f.elements.length; i++) {
                    if (f.elements[i].name) {
                        switch (f.elements[i].type) {
                            case 'hidden':
                            case 'password':
                            case 'text':
                            case 'textarea':
                            case 'select-one':
                                params += (params == '' ? '' : '&') + f.elements[i].name + '=' + encodeURIComponent(f.elements[i].value); break;
                            case 'select-multiple':
                                tmp = '';
                                for (var p = 0; p < f.elements[i].options.length; p++)
                                    if (f.elements[i].options[p].selected) tmp += (tmp == '' ? '' : ',') + f.elements[i].options[p].value;
                                if (tmp != '') params += (params == '' ? '' : '&') + f.elements[i].name + '=' + encodeURIComponent(tmp); break;
                            case 'radio': case 'checkbox':
                                if (f.elements[i].checked) params += (params == '' ? '' : '&') + f.elements[i].name + '=' + encodeURIComponent(f.elements[i].value); break;
                        }
                    }
                }
                return params;
            }
    
    点赞 评论
  • Jimbo 2016-03-06 09:23

    会JQUERY就不存在getElementById的困扰了

    点赞 评论
  • yishuixs 2016-03-06 09:31

    jQuery里有个serializeArray()方法,可以将表单数据整合成JSON,非常方便;或者使用serialize()方法整合成键值对字符串,也不错。

    如此,使用PHP处理起来非常舒服~~~

    请采纳!

    点赞 评论
  • _Seaton 2016-03-07 06:20

    使用jq。
    getElementById("myId")--》$("#myId")
    如果是input,使用val()获取其值,设置值用val("设值")
    用法:
    $("#myId").val();
    教程:
    http://www.w3school.com.cn/jquery/jquery_dom_get.asp

    点赞 评论

相关推荐 更多相似问题