GVKun编程网logo

通过AJAX调用的回声PHP编码JSON返回确切的内容?

21

本文的目的是介绍通过AJAX调用的回声PHP编码JSON返回确切的内容?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ajax-返回值-MUI用ajax如何请求thin

本文的目的是介绍通过AJAX调用的回声PHP编码JSON返回确切的内容?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ajax-返回值 - MUI用ajax如何请求thinkphp中返回的json的内容?、Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示、ajax调用返回php接口返回json数据、ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数的知识。

本文目录一览:

通过AJAX调用的回声PHP编码JSON返回确切的内容?

通过AJAX调用的回声PHP编码JSON返回确切的内容?

我想我在这里遗漏了一些东西:

使用AjAX,我从数据库中获取了一些数据,并以JSON格式将其发送回去。$ jsondata = array();

while ($Row = mysql_fetch_array($params)){    $jsondata[]= array(''cat_id''=>$Row["cat_id"],                           ''category''=>$Row["category"],                      ''category_desc''=>$Row["category_desc"],                     ''cat_bgd_col''=>$Row["cat_bgd_col"]);};echo("{\"Categories\": ".json_encode($jsondata)."};");

到目前为止,我认为没有问题。

在回教士方面,我将以上内容接收回

ajaxRequest.responseText

如果我这样做

var categoriesObject = ajaxRequest.responseText; alert(categoriesObject);

我看到了我希望看到的内容,即警报中的整个阵列。

一切出错的地方就是尝试访问响应。我得到的错误是“ categoriesObject”不是对象-
如果不是,它是什么?我的bugginh是,我什至不能像这样访问它:

document.write(categoriesObject.Categories[0].category);

那我在做什么错呢?

答案1

小编典典
  1. 您不应该手动创建JSON。用:
    echo json_encode(array(''Categories'' => $jsondata));

要不就

    echo json_encode($jsondata);

我看不出要补充的理由Categories

  1. 您必须使用JSON.parse(在大多数浏览器中可用,但也可以作为脚本使用)在客户端解码JSON :

    var data = JSON.parse(ajaxRequest.responseText);
  2. 如果要非常正确,请添加

    header(''Content-type: application/json'');

到您的PHP脚本。

ajax-返回值 - MUI用ajax如何请求thinkphp中返回的json的内容?

ajax-返回值 - MUI用ajax如何请求thinkphp中返回的json的内容?

我现在本地调试时请求阿里云上的数据,阿里云上已做好后台可以返回内容,目前前端ajax请求不到任何数据,用api测试工具轻轻阿里云的地址有两种情况,第一种是弹出拒绝访问的弹框,第二种情况是返回http302响应码。请问我如何能获取到后台的数据进行移动端操作呢?本人第一次进行移动端开发,之前从未接触过,如有描述不清或不专业敬请谅解。

回复内容:

我现在本地调试时请求阿里云上的数据,阿里云上已做好后台可以返回内容,目前前端ajax请求不到任何数据,用api测试工具轻轻阿里云的地址有两种情况,第一种是弹出拒绝访问的弹框,第二种情况是返回http302响应码。请问我如何能获取到后台的数据进行移动端操作呢?本人第一次进行移动端开发,之前从未接触过,如有描述不清或不专业敬请谅解。

看你说的弹出拒绝访问说明你访问的要么地址要么参数还一种可能是本地网络无法访问外网,情况有很多。302说明重定向了。你在本地直接用php的curl做测试可以拿到数据吗?或者用postman工具调试看看能拿到数据吧!

Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示

Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示

一、描述

现在有个jsp页面上有一个所属学校和一个所属班级的下拉列表,只有在选择所属学校后才弹出所属班级列表,所以采用Ajax技术返回一个ArrayList类型的键值对显示在所属班级列表中,效果如图1所示:



二、源代码

1、main.jsp主要源代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<link rel="stylesheet" type="text/css" href="../../../../css/styles.css">
		<title>Excel批量创建用户</title>
		
		 <script type="text/javascript" src="boardCollect.js"></script> 
   </head>
	<body>
<tablewidth="90%">
					<tr>
						<td>
							请选择要创建用户的角色:
						</td>
						<td>
						<s:radio name="roleId" list="#{'16':'教师','28':'学生','18':'家长'}" value="'16'"></s:radio>


						</td>
					</tr>
					
					<tr>
						<td>
							请选所属学校:
						</td>
						<td>
						<!-- 加入学校、班级、学科、年级-->
						<select name="schoolCircle" id="schoolCircle" onchange="showClass()">
									<option value="0">
										-学校列表-
									</option>
									
									<c:forEach items="${vul.schoolList}" var="school">
										<option value="${school.CIRCLE_ID}">
											${school.CIRCLE_NAME}
										</option>
										
									</c:forEach>
						</select>


						</td>						
					</tr>					
					<tr >
						<td>
							请选择所属班级:
						</td>
						<td id="classCircleTD">
						<select name="classCircle" id="classCircle" disabled>
						<option value="0">
							-班级列表-
						</option>
									
						</select>


						</td>						
					</tr>
					<tr>
						<td>
							请选择文件(EXCEL):
						</td>
						<td>
							<s:file id="excel" name="excel"></s:file>


						</td>
					</tr>
					<tr>
						<td colspan="2" align="center">
							<s:submit value="上传文件" css></s:submit>
							<input type="button" value="Excel模板下载"onclick="document.downloadTableInfo.submit();" />
						</td>
					</tr>
				</table>
		</body>
</html>

2、jsp引入的在相同目录下调用Ajax的boardCollect.js源代码
// 创建请求
var HTTP_Request;


function createXMLHttpRequest(){
		HTTP_Request=false;
    if(window.XMLHttpRequest){
		HTTP_Request=new XMLHttpRequest();  //初始化HTTP_Request
		if(HTTP_Request.overrideMimeType){
			HTTP_Request.overrideMimeType("text/html");
		}
	}else if(window.ActiveXObject){      
		try{
			HTTP_Request=new ActiveXObject("Msxml2.XMLHTTP");  //在IE中创建XMLHttpRequest对象,新版IE
		}catch(e){
			try{
				HTTP_Request=new ActiveXObject("Microsoft.XMLHTTP");  //在IE中创建XMLHttpRequest对象旧版IE
			}catch(e){}
		}
	}
		
	if(!HTTP_Request){
		window.alert("不能创建XMLHttpRequest对象实例");
		return false;
	}
}




// 显示班级列表
var comlist;
function showClass(){	//点击“所属学校”显示该学校下的所有班级列表
	//window.alert("showClass");
	var school = document.getElementById("schoolCircle").value;
	//alert(school);
		if (school == 0) {
			var htmlList = '<select name="classCircle" id="classCircle" >'
					+ '<option value="0">--班级列表--</option>';
			document.getElementById("classCircle").innerHTML = htmlList;
		} else {
			showOptions("findClassList1.action?school=" + school);
		}
	
	
	//showComments("/modules/forum/frontForum/forumAll/boardCollect.action?mcpForumBoard.boardId="+id);
}


function showOptions(url){	
	
	createXMLHttpRequest();
	//window.alert(url);
	// 指定处理函数 事件解发器!!!
	HTTP_Request.onreadystatechange=processRequest; 	
	HTTP_Request.open("GET",url,true);  
	HTTP_Request.send(null); 
}
 


// 处理返回信息的函数


function processRequest(){
	//window.alert(HTTP_Request.readyState);
	if(HTTP_Request.readyState==4){ 
		//window.alert(HTTP_Request.status);
		if(HTTP_Request.status==200){
			
			var classList = eval('('+HTTP_Request.responseText+')');
			//var classList = com.classList;
			//alert(classList.length);
			
			var htmlList = '<select name="classCircle" id="classCircle" >';
			htmlList += '<option value="0">--班级列表--</option>';
			for ( var i = 0; i < classList.length; i++) {
				var circle = classList[i];
				//alert(circle["CIRCLE_ID"]);
	
				htmlList += '<option value="'+circle["CIRCLE_ID"]+'">'
						+ circle["CIRCLE_NAME"] + '</option>';
	
			}
	
			document.getElementById("classCircleTD").innerHTML = htmlList;
			
		}
	}
}


3、boardCollect.js中的Ajax调用后台的action处理类源代码

// 查找所选学校的所有班级
		public List<Map> findClassList1() {
	
			HttpServletResponse response; 
	        response=ServletActionContext.getResponse(); 
	        response.setContentType( "text/json;charset=utf-8"); 
	        response.setHeader( "Cache-Control","no-cache"); 
	        response.setHeader( "Pargma","no-cache"); 
	        PrintWriter out;
			try {
				out = response.getWriter();			
			
	        JSONArray returnArticles = new JSONArray();    			
			
			if (school == null || school.length() == 0) {
				return null;
			} else {
				String sql = "select CIRCLE_ID,CIRCLE_NAME from dersp_circle,dersp_school_class_relation "
						+ "where class_id=circle_id and school_id=" + school;
				System.out.println("sql:"+sql);
				List<Map> list = jdbcTemplate.queryForList(sql);
				for( int i = 0; i < list.size(); i++){
			       	JSONObject js = new JSONObject();	       	
			    	
			    	try {
			    		js.put("CIRCLE_ID",list.get(i).get("CIRCLE_ID"));
						js.put("CIRCLE_NAME",list.get(i).get("CIRCLE_NAME"));
						returnArticles.put(js);
					} catch (JSONException e) {
						// Todo Auto-generated catch block
						e.printstacktrace();
					}
			    	
		        }
			}
			out.write(returnArticles.toString()); 
	        out.close(); 
			
			} catch (IOException e) {
				// Todo Auto-generated catch block
				e.printstacktrace();
			}
			return null;	
		}


三、总结

1、jsp页面的一个onchange或者onclick事件调用js中的一个方法,该方法使用Ajax技术动态调用数据库中的数据,并且异步写回一个JSONArray,根据select中的option属性显示出取回的数据;

2、如果调用Ajax后想返回一个Map类型的数组(多条数据)就需要使用JSONArray类型,将每个Map构造成一个JSONObject类型并添加到JSONArray数组中异步写回jsp页面;

3、如何你从action中只想返回一个Map类型的键值对(如取得count(*)记录数),可以只使用JSONObject对象返回一条数据,并进行显示。

ajax调用返回php接口返回json数据

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 addingcallback=?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 likejQuery17209314005577471107_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(){ header("content-type:application/json");if($_GET'callback'])print $_GET]."("} json_encode$GLOBALS'ret']);")"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数据 ajax jsonp ajax json实例 ajax获取后台json数

ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数

php代码如下:

<span><?php </span>header(<span>''Content-Type: application/json''</span>);
    header(<span>''Content-Type: text/html;charset=utf-8''</span>);

    <span>$email </span><span>= </span><span>$_GET[</span><span>''email''</span><span>]</span>;

    <span>$user </span><span>= </span><span>[]</span>;

    <span>$conn </span><span>= @</span>mysql_connect(<span>"localhost"</span>,<span>"Test"</span>,<span>"123456"</span>) <span>or die</span>(<span>"Failed in connecting database"</span>);
    mysql_select_db(<span>"Test"</span>,<span>$conn</span>);
    mysql_query(<span>"set names ''UTF-8''"</span>);
    <span>$query </span><span>= </span><span>"select </span><span><em>*</em></span><span> from UserInformation where email = ''"</span><span>.</span><span>$email</span><span>.</span><span>"''"</span>;
    <span>$result </span><span>= </span>mysql_query(<span>$query</span>);
    <span>if </span>(<span>null </span><span>== </span>(<span>$row </span><span>= </span>mysql_fetch_array(<span>$result</span>))) <span>{
</span><span>echo </span><span>$_GET[</span><span>''callback''</span><span>]</span><span>.</span><span>"(no such user)"</span>;
    <span>} </span><span>else </span><span>{
</span><span>$user[</span><span>''email''</span><span>] </span><span>= </span><span>$email</span>;
        <span>$user[</span><span>''nickname''</span><span>] </span><span>= </span><span>$row[</span><span>''nickname''</span><span>]</span>;
        <span>$user[</span><span>''portrait''</span><span>] </span><span>= </span><span>$row[</span><span>''portrait''</span><span>]</span>;
        <span>echo </span><span>$_GET[</span><span>''callback''</span><span>]</span><span>.</span><span>"("</span><span>.</span>json_encode(<span>$user</span>)<span>.</span><span>")"</span>;
    <span>}
</span><span>?&gt;</span></span>
登录后复制
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:

立即学习“PHP免费学习笔记(深入)”;

<span>$ret</span><span>[</span><span>''foo''</span><span>]</span><span>=</span><span>"bar"</span><span>;</span><span>
finish</span><span>();</span><span>function</span><span> finish</span><span>()</span><span>{</span><span>
    header</span><span>(</span><span>"content-type:application/json"</span><span>);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>''callback''</span><span>])</span><span>{</span><span>print</span><span> $_GET</span><span>[</span><span>''callback''</span><span>].</span><span>"("</span><span>;</span><span>}</span><span>print</span><span> json_encode</span><span>(</span><span>$GLOBALS</span><span>[</span><span>''ret''</span><span>]);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>''callback''</span><span>])</span><span>{</span><span>print</span><span>")"</span><span>;</span><span>}</span><span>exit</span><span>;</span><span>}</span>
登录后复制

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数据,包括了ajax,json方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

今天关于通过AJAX调用的回声PHP编码JSON返回确切的内容?的分享就到这里,希望大家有所收获,若想了解更多关于ajax-返回值 - MUI用ajax如何请求thinkphp中返回的json的内容?、Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示、ajax调用返回php接口返回json数据、ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数等相关知识,可以在本站进行查询。

本文标签: