详细问题描述
通过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函数中。
1 个回复
LLgg
看一下下面的代码是不是符合你的要求;
因为涉及到跨域请求,所以以下操作需要在h5+环境下,以及引用mui.min.js文件。
注意事项:本地发送数据的模式应该与服务器接受的模式一致
本地采用get发送数据,那么php服务器端应该用 $_GET[]来接收
本地采用post发送数据,那么php服务器端应该用 $_POST[]来接收
js发送数据,并且获取返回的数据
https://www.zzxxo.com/cs/7.php代码如下
php服务端代码:
返回结果: