js如何提交post使php获取(使用原生js)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js如何提交post使php获取(使用原生js)相关的知识,希望对你有一定的参考价值。

需要原生js

document.querySelector("#btnAjax").onclick = function ()
        var ajax = new XMLHttpRequest();
        // 使用post请求
        ajax.open('post','ajax_post.php');
        // 如果 使用post发送数据 必须 设置 如下内容
        // 修改了 发送给 服务器的 请求报文的 内容
        // 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
        ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        // 发送
        // post请求 发送的数据 写在 send方法中
        // 格式 name=jack&age=18 字符串的格式
        ajax.send('name=jack&age=998');
        // 注册事件
        ajax.onreadystatechange = function ()
            if (ajax.readyState==4&&ajax.status==200)
                console.log(ajax.responseText);
            
        
    
参考技术A var xhr=new XMLHttpRequest();
xhr.open('post','xxx.php',true);
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xhr.onload=function()
    if(xhr.status==200)
        console.log(xhr.response);
    

xhr.send(data);//提交

参考技术B <script>
    //创建异步对象
    var xhr = new XMLHttpRequest();
    //设置请求的类型及url
    xhr.open('post', 'a.php' );
    //post请求一定要添加请求头才行不然会报错
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    //发送请求
    xhr.send('name=fox&age=18');
    xhr.onreadystatechange = function () 
        // 这步为判断服务器是否正确响应
        if (xhr.readyState == 4 && xhr.status == 200) 
            console.log(xhr.responseText);
        
    ;
</script>

我测试过了 这个是可以的

原生js上传文件,使用new FormData()

 当创建一个内容较多的表单,表单里面又有了文件上传,文件上传也需要表单提交,单一的上传文件很好操作;

<form action="接口" enctype="multipart/form-data" method="post">
    <input type="file" name="uploadFile"/>
    <input type="submit" value="提交"/>
</form>

但是,正常提交数据和上传文件不是一个接口,后台接收参数的方式也是不一样的;这就需要两个form表单,但是form表单是不能嵌套的;还有就是表单的内容是按照顺序排列的,穿件两个独立的表单,写样式会很麻烦;

  因此需要一个动态创建form表的js代码

这个方法只支持到IE10,IE10以下不支持new FormData();

//获取文件
function addFile() {
   document.getElementById(‘test1‘).value = "";
var file = document.querySelector(‘input[type=file]‘).files[0];//IE10以下不支持
var typeStr="image/jpg,image/png,image/gif,image/jpeg";
if(typeStr.indexOf(file.type)>=0){
document.getElementById(‘test1‘).value = file.name;
if (file.size > 2097152) {
alert("上传的文件不能大于2M");
return;
}else{
     upload(path,file)
    }
}else{
alert("请上传格式为jpg、png、gif、jpeg的图片");
}

//上传文件
function
upload(path,theFormFile) { var fd = new FormData(); fd.append(‘file1‘, theFormFile);//上传的文件: 键名,键值 var url = path;//接口 url = url ? url : ‘‘; var XHR = null; if (window.XMLHttpRequest) { // 非IE内核 XHR = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE内核,这里早期IE版本不同,具体可以查下 XHR = new ActiveXObject("Microsoft.XMLHTTP"); } else { XHR = null; } if (XHR) { XHR.open("POST", url); XHR.onreadystatechange = function() { if (XHR.readyState == 4 && XHR.status == 200) { var resultValue = XHR.responseText; var data = JSON.parse(resultValue); XHR = null; } } XHR.send(fd); } };

 

















以上是关于js如何提交post使php获取(使用原生js)的主要内容,如果未能解决你的问题,请参考以下文章

怎样在php中得到js的值

ajax 提交表单 原生js

如何将js的变量在php中使用

求技术高手给写个JS代码 使下面这个提交表单 没有输入姓名 手机号码 等前提下不能提交表单申请!谢谢

php获取post数据

js判断循环多个表单问题