ajax调用返回php接口返回json数据的方法(必看篇)


Posted in PHP onMay 05, 2017

php代码如下:

<?php

  header('Content-Type: application/json');
  header('Content-Type: text/html;charset=utf-8');

  $email = $_GET['email'];

  $user = [];

  $conn = @mysql_connect("localhost","Test","123456") or die("Failed in connecting database");
  mysql_select_db("Test",$conn);
  mysql_query("set names 'UTF-8'");
  $query = "select * from UserInformation where email = '".$email."'";
  $result = mysql_query($query);
  if (null == ($row = mysql_fetch_array($result))) {
    echo $_GET['callback']."(no such user)";
  } else {
    $user['email'] = $email;
    $user['nickname'] = $row['nickname'];
    $user['portrait'] = $row['portrait'];
    echo $_GET['callback']."(".json_encode($user).")";
  }

?>

js代码如下:

<script>
    $.ajax({
      url: "http://test.localhost/UserInterfaceForChatroom/UserInformation.php?email=pshuyue@gmail.com",
      type: "GET",
      dataType: 'jsonp',
      //      crossDomain: true,
      success: function (result) {
        //        data = $.parseJSON(result);
        //        alert(data.nickname);
        alert(result.nickname);
      }
    });
  </script>

其中遇到了两个问题:

1、第一个问题:

Uncaught SyntaxError: Unexpected token :

解决方案如下:

This has just happened to me, and the reason was none of the reasons above. I was using the jQuery command getJSON and adding callback=? to use JSONP (as I needed to go cross-domain), and returning the JSON code {"foo":"bar"} and getting the error.

This is because I should have included the callback data, something like jQuery17209314005577471107_1335958194322({"foo":"bar"})

Here is the PHP code I used to achieve this, which degrades if JSON (without a callback) is used:

$ret['foo'] = "bar";
finish();

function finish() {
  header("content-type:application/json");
  if ($_GET['callback']) {
    print $_GET['callback']."(";
  }
  print json_encode($GLOBALS['ret']);
  if ($_GET['callback']) {
    print ")";
  }
  exit; 
}

Hopefully that will help someone in the future.

2、第二个问题:

解析json数据。从上面的javascript中可以看到,我没有使用jquery.parseJSON()这些方法,开始使用这些方法,但是总是会报

VM219:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1的错误,后来不用jquery.parseJSON()这个方法,反而一切正常。不知为何。

以上这篇ajax调用返回php接口返回json数据的方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
笑谈配置,使用Smarty技术
Jan 04 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
遭遇php的in_array低性能问题
Sep 17 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
详谈PHP编码转换问题
Jul 28 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 PHP
php获取当前url地址的方法小结
Jan 10 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 #PHP
PHP实现Session入库/存入redis的方法
May 04 #PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 #PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 #PHP
PHP调用Mailgun发送邮件的方法
May 04 #PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 #PHP
Yii2数据库操作常用方法小结
May 04 #PHP
You might like
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jQuery中map()方法用法实例
2015/01/06 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
python 网络编程常用代码段
2016/08/28 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python的range和linspace使用详解
2019/11/27 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
python 一维二维插值实例
2020/04/22 Python
python代码能做成软件吗
2020/07/24 Python
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
游戏商店:Eneba
2020/04/25 全球购物
一套.net面试题及答案
2016/11/02 面试题
入学生会自荐书范文
2014/02/05 职场文书
师德师风建设方案
2014/05/08 职场文书
学校个人对照检查材料
2014/08/26 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
少儿励志名言(80句)
2019/08/14 职场文书