• 技术文章 >后端开发 >php教程

    ajax实现调用返回php接口返回json数据的方法

    墨辰丷墨辰丷2018-05-23 09:33:50原创2072
    本篇文章主要介绍ajax实现调用返回php接口返回json数据的方法,感兴趣的朋友参考下,希望对大家有所帮助。

    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()这个方法,反而一切正常。不知为何。

    相关推荐:

    php中的ini配置原理详解_php基础

    php格式化json函数示例代码_php技巧

    php中{}大括号是什么意思_php基础

    以上就是ajax实现调用返回php接口返回json数据的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:javascript ajax php
    上一篇:php在cli模式下获取参数的方法 下一篇:ThinkPHP 3.2.2事务操作的方法
    线上培训班

    相关文章推荐

    • 你知道这个PHP命令行选项解析库(pflag)吗?• 带你看懂PHP中的class定义类与成员属性方法• PHP中如何才能将时间日期格式化?怎么计算时间差?• 一定搞得懂PHP中如何添加图片水印• 最详细的教你PHP时间戳与日期时间的转换

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网