ajax通过jsonp跨域传值给php,ajax成功发送数据,但php接收不到数据

不想当小白 2020-07-20 03:34:44
在网上找的代码如下:
前端网页代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="jquery-1.5.2.min.js"></script>
<script src="ajax.js"></script>
</head>

<body>
<form name="form">
<input type="text" name="sex">
<input type="text" name="age">
<input type="button" id="btn" value="button" />
</form>
</body>
</html>


ajax代码:
$(document).ready(function(){

$("#btn").click(function(k) {
//...
var j = $("form").serializeArray();//序列化name/value
// var test_sname = 6;
$.ajax({
type: 'GET', //这里用GET
url: 'testajax.php',
dataType: 'jsonp', //类型
data: j,
jsonp: 'callback', //jsonp回调参数,必需
async: false,
success: function(result) {//返回的json数据
alert(result.message); //回调输出

result = result || {};
if (result.msg=='err'){
alert(result.info);
}else if (result.msg=="ok"){
alert('提交成功');
}else{
alert('提交失败');
}

},
timeout: 3000
})
//...
});

});


后端php代码:
$test_ajax_callback = isset($_GET['callback']) ? trim($_GET['callback']) : ''; //jsonp回调参数,必需

if(!empty($test_ajax_callback)){
// $test_dbp_sname = 5;
$test_ajax_date = array("age"=>$_GET['age'], "message"=>$_GET['sex']);
$test_ajax_date["msg"]="err";
$test_ajax_date["info"]="因人品问题,发送失败";
$test_ajax_tmp= json_encode($test_ajax_date); //json 数据
echo $test_ajax_callback . '(' . $test_ajax_tmp .')'; //返回格式,必需
}


现在运行这个代码,前端页面会执行success里面的弹出框(应该就是代表ajax成功传出去数据了吧?),但php端却显示接收不到数据。

这个问题困扰我三天了,真的快疯掉了,希望各位能够帮助我解决这个问题,非常感谢!
...全文
7007 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
无情的CV机器 2020-07-22
  • 打赏
  • 举报
回复
serializeArray这个函数返回的是JSON对象吧
lockmemory 2020-07-21
  • 打赏
  • 举报
回复
我不是很懂,不过有几个问题你可以看下 1 打开开发者工具,看看console有输出html错误没有 (藐视sex和age没有自封闭) 2 success之前,jquery有ajax其他的函数,你可以用一下(可以查询JQuery手册或者上网查询). 3 后台接受参数,先不要搞复杂了,这样看不出问题。搞一条数据进行发送/接收测试就行。 只要逻辑和语法没有问题,就百度吧。

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧