thinkphp中ajax请求的值data
答案:2 悬赏:60 手机版
解决时间 2021-01-04 18:13
- 提问者网友:我一贱你就笑
- 2021-01-03 20:55
thinkphp中ajax请求的值data
最佳答案
- 五星知识达人网友:思契十里
- 2021-01-10 06:13
最近在玩Thinkphp,废话不多说,说正事.
客户端js提交代码
1 $.post('http://localhost/app/index.php/Index/Index/handle',{username : document.getElementById('username').value,content : document.getElementById('content').value,},function (data){console.log(data);alert('ok');});
主要是提交两个表单项的内容到handle,如果成功返回就执行function函数弹出一个ok
ps:这段代码不是标准的jQuery的写法,标准的应该是
$( 'input[name=username]' ).val()
$( '#username' ).val()
服务器端脚本
1 public function handle(){
2 if (!isAJAX) {
3 halt('请求有误');
4
5 } //else
6 // //echo '请求成功';
7 // // var_dump(I('post.'));
8 $wi=M('wish');
9 $data['wi_name']=I('username');
10 $data['wi_content']=I('content');
11 $data['wi_time']=time();
12 $result=$wi->data($data)->add();
13 // var_dump($result);
14 if ($result) {
15 // $this->success('插入成功');
16 // $this->ajaxReturn('110','插入成功',1);
17 $dataReturn['status']=1;
18 $dataReturn['info']='the post is ok';
19 $this->ajaxReturn($dataReturn,'json');
20 }else{
21 halt('插入失败');
22 }
23
24 }
但是数据提交成功,一直没有弹窗,也就是回调函数一直没有执行.找了半天,以为是json格式有问题,才知道是我注释的那段代码
//else
// //echo '请求成功';
// // var_dump(I('post.'));
本来是为了更友好的提示,估计是把这个当成了返回值,然后因为客户端解析出问题,所以没有反应,把它注释掉就行了。
ps:今天又研究了下,发现应该是Thinkphp将echo的内容返回给了前端,而因为echo的内容不符合jQuery的格式,所以不能正常解析
所以我把echo的内容换成 echo "{ info : '1213', name : '4442'}";
然后,页面终于有反应了,用console.log(data),打印后内容是{ info : '1213', name : '4442'},不过不能识别是json格式
好吧,又发现新原因了,不是之前想的,如果后台用echo或者其他输出的话,Thinkphp会将它传到前台,当做这个Ajax请求的返回值,But如果你在后来再来一个$this->ajaxReturn($dataReturn,'json');,就会出错,不执行
客户端js提交代码
1 $.post('http://localhost/app/index.php/Index/Index/handle',{username : document.getElementById('username').value,content : document.getElementById('content').value,},function (data){console.log(data);alert('ok');});
主要是提交两个表单项的内容到handle,如果成功返回就执行function函数弹出一个ok
ps:这段代码不是标准的jQuery的写法,标准的应该是
$( 'input[name=username]' ).val()
$( '#username' ).val()
服务器端脚本
1 public function handle(){
2 if (!isAJAX) {
3 halt('请求有误');
4
5 } //else
6 // //echo '请求成功';
7 // // var_dump(I('post.'));
8 $wi=M('wish');
9 $data['wi_name']=I('username');
10 $data['wi_content']=I('content');
11 $data['wi_time']=time();
12 $result=$wi->data($data)->add();
13 // var_dump($result);
14 if ($result) {
15 // $this->success('插入成功');
16 // $this->ajaxReturn('110','插入成功',1);
17 $dataReturn['status']=1;
18 $dataReturn['info']='the post is ok';
19 $this->ajaxReturn($dataReturn,'json');
20 }else{
21 halt('插入失败');
22 }
23
24 }
但是数据提交成功,一直没有弹窗,也就是回调函数一直没有执行.找了半天,以为是json格式有问题,才知道是我注释的那段代码
//else
// //echo '请求成功';
// // var_dump(I('post.'));
本来是为了更友好的提示,估计是把这个当成了返回值,然后因为客户端解析出问题,所以没有反应,把它注释掉就行了。
ps:今天又研究了下,发现应该是Thinkphp将echo的内容返回给了前端,而因为echo的内容不符合jQuery的格式,所以不能正常解析
所以我把echo的内容换成 echo "{ info : '1213', name : '4442'}";
然后,页面终于有反应了,用console.log(data),打印后内容是{ info : '1213', name : '4442'},不过不能识别是json格式
好吧,又发现新原因了,不是之前想的,如果后台用echo或者其他输出的话,Thinkphp会将它传到前台,当做这个Ajax请求的返回值,But如果你在后来再来一个$this->ajaxReturn($dataReturn,'json');,就会出错,不执行
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-01-10 06:29
转换成json对象后,直接用访问数组的方式访问。
加入返回的json字符串为:{"name":'a',"age":"10"}
success:function(data){
var responsedata =eval(data);//json字符串转换为json对象
alert("姓名:"+responsedata.name);
alert("年龄:"+responsedata.age);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯