1***@qq.com
1***@qq.com
  • 发布:2017-08-14 12:39
  • 更新:2017-08-14 14:24
  • 阅读:4509

【报Bug】mui.ajax 后台无法获取数据

分类:MUI

详细问题描述
通过js想后端发送数据,但后端无法接收数据
前端js代码如下:

function addsub(obj){  
    //plus.nativeUI.toast( "ajax" );  
    //plus.nativeUI.toast( obj.title+'  '+ obj.imgurl+'  '+obj.location+'  ' +obj.descrpit+'  '+obj.username+'  '+obj.price+'  '+obj.subid);  
    mui.ajax('某个url',{  

        data:{  
            name:'dede',  
            password:'123123'  
        },  
        headers:{'Content-Type': 'application/json'},  
        type:'post',  
        timeout:10000,  
        success:function(da){  
            plus.nativeUI.toast( da );  
            mui('#btn').button('reset');  
            /*var data = eval('(' + da + ')');  
            if(data.re==1){  
                plus.nativeUI.toast( "发布成功" );  
                mui('#btn').button('reset');  
                return;  
            }*/  
            else{  
                plus.nativeUI.toast( "发布失败,请稍后再试" );  
            }  
            setTimeout(function(){  
                mui('#btn').button('reset');  
            },500)  
        },  
        error:function(XMLHttpRequest, textStatus, errorThrown){  
            plus.nativeUI.toast( XMLHttpRequest.status+'  '+XMLHttpRequest.readyState+'   '+textStatus );  
            setTimeout(function(){  
                mui('#btn').button('reset');  
            },500)  
            return;  
        }  
    })  
}

后端php代码如下:

<?php   
header('Content-type: application/json; charset=UTF8');  
header('Access-Control-Allow-Origin:*');  
header('Access-Control-Allow-Methods:POST');  
header('Access-Control-Allow-Headers:x-requested-with,content-type');  

        if ($_SERVER["CONTENT_TYPE"] == "application/json") {   
            $input = file_get_contents('php://input');   
            var_dump($input);   
            $object = json_decode($input);   
            $name = $object->name;   
            var_dump($name);   
        }   
?> 

起初我使用了post直接获取,发现无法得到,显示这些
Notice: Undefined index: name in test01.php on line 2

后来通过查找资料,找到了一篇
http://ask.dcloud.net.cn/article/763
按照此方法修改后发现直接跳转到了error方法,弹出的信息XMLHttpRequest.status=200,XMLHttpRequest.readyState=4

按理说应该是正确的进行ajax请求了,一开始认为是json格式错误,但我将传递方式改为get时,后台php修改为直接get,将头文件改为header('Content-type: text/json; charset=UTF8');便可以正确运行

但在post方法中,不管采取什么方法要么是undefined,要么是跳转到error函数中。

2017-08-14 12:39 负责人:无 分享
已邀请:
LLgg

LLgg

看一下下面的代码是不是符合你的要求;
因为涉及到跨域请求,所以以下操作需要在h5+环境下,以及引用mui.min.js文件。

注意事项:本地发送数据的模式应该与服务器接受的模式一致
本地采用get发送数据,那么php服务器端应该用 $_GET[]来接收
本地采用post发送数据,那么php服务器端应该用 $_POST[]来接收

js发送数据,并且获取返回的数据

<!DOCTYPE html>  
<html>  
    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />  
        <title>mui.ajax请求中旋网数据</title>  
        <!--使用mui.ajax,必须调用的js文件-->  
        <script src="js/mui.min.js"></script>  
        <!--miu.ajax-->  
        <script>  
            mui.init();  
            mui.ajax('https://www.zzxxo.com/cs/7.php', { //请求地址  
                data: {//发送到服务器的数据  
                    name: '中旋网', //发送name数据  
                    url: 'https://www.zzxxo.com' //发送url数据  
                },   
                dataType: 'text', //服务器返回数据类型  
                type: 'GET', //HTTP请求类型  
                timeout: 10000, //超时时间设置为10秒  
                async: true, //true异步加载  
                cache: true, //缓存  
                success: function(data) { //成功事件  
                    alert(data)  
                },  
                error: function(xhr, type, errorThrown) {  
                    //错误事件  
                }  
            });  
        </script>  
    </head>  
    <body>  
    </body>  
</html>

https://www.zzxxo.com/cs/7.php代码如下
php服务端代码:

<?php  
$name=$_GET['name']; //使用$_GET获取name,  
$url=$_GET['url']; //使用$_GET获取url  
echo $name.$url; //返回数据  
?>

返回结果:

中旋网https://www.zzxxo.com

该问题目前已经被锁定, 无法添加新回复