ajax返回数据php解析,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代码如下:

其中遇到了两个问题:

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数据的方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网页设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax(Asynchronous JavaScript and XML)是一种前端技术,它允许网页在无需刷新整个页面的情况下,通过JavaScript向服务器异步发送请求并接收响应。当服务器返回JSON数据时,Ajax可以将这些JSON数据解析成JavaScript对象,以便于客户端直接操作。 解析JSON的过程通常是这样的: 1. **创建XMLHttpRequest对象**:首先,你需要创建一个XMLHttpRequest对象,这是在浏览器中处理AJAX请求的主要工具。 2. **发起请求**:然后,使用`open()`方法指定请求的类型(如GET或POST)、URL以及是否异步(通常设为true),接着调用`send()`发送请求。 3. **设置回调函数**:在发送请求之前,需要设置一个`onreadystatechange`事件监听器,该事件会在服务器响应状态改变时触发。在其中的`responseText`属性包含了服务器返回数据。 4. **解析JSON**:当`readyState`等于4(表示请求已完成且响应可用)并且`status`为200(成功响应)时,你可以用`JSON.parse()`方法将`responseText`转换为JavaScript对象。这是因为JSON格式就是键值对的字符串形式,而`parse()`函数能将其解析成对象或数组。 ```javascript function handleResponse() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'your-api-url', true); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { var data = JSON.parse(xhr.responseText); // 现在data是一个JavaScript对象,你可以直接操作其内容 console.log(data); } }; xhr.send(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值