ajax 获取表单内容然后传递PHP-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

小旋风柴进 2016-03-10 10:09:33 1397

我之前一直在用DOM通过js提取表单内容给PHP做处理,其实也就相当于没用form。。
后来form的内容越来越多了,通过一个个getElementById来获取表单内容然后给PHP越来越不现实了
我在想能不能通过form原本的POST方式(或者有别的方式?)直接将表单内容变成数组,然后js获取数组之后在传递给后台PHP,然后PHP在解析数组做处理,这样做ajax?
可能以上描述不是很专业,忘大神谅解,非常感谢

JavaScript 前端开发 PHP
分享到
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 18:56:57

    设置表单的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;
            }
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题