首页  >  文章  >  后端开发  >  ajax实现调用返回php接口返回json数据的方法

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

墨辰丷
墨辰丷原创
2018-05-23 09:33:503219浏览

本篇文章主要介绍ajax实现调用返回php接口返回json数据的方法,感兴趣的朋友参考下,希望对大家有所帮助。

php代码如下:

<?php

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

  $email = $_GET[&#39;email&#39;];

  $user = [];

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

?>

js代码如下:

<script>
    $.ajax({
      url: "http://test.localhost/UserInterfaceForChatroom/UserInformation.php?email=pshuyue@gmail.com",
      type: "GET",
      dataType: &#39;jsonp&#39;,
      //      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[&#39;foo&#39;] = "bar";
finish();

function finish() {
  header("content-type:application/json");
  if ($_GET[&#39;callback&#39;]) {
    print $_GET[&#39;callback&#39;]."(";
  }
  print json_encode($GLOBALS[&#39;ret&#39;]);
  if ($_GET[&#39;callback&#39;]) {
    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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn