请教 JQUERY 如何 接收处理 JSON格式数据 50

小弟新手,刚学了AJAX,现在想做一个联级菜单,遇到了一些困难,请教一下各位前辈。首先Test.php//这个页面是来处理前面传的数据的$act=$_POST['act'... 小弟新手,刚学了AJAX,现在想做一个联级菜单,遇到了一些困难,请教一下各位前辈。

首先 Test.php // 这个页面是来处理前面传的数据的

$act=$_POST['act'];
$id=$_POST['id'];
if ($act=='shop') {
$sql=$db->query("select * from tb_dealers where YT_ShopID=$id");
while($row=mysql_fetch_array($sql))
{$select[]=array("ShopName"=>$row["ShopName"]);}
$a= json_encode($select);
echo ($a); }

通过打印测试,得出结论:返回来的数据形式是这样的:
[{"ShopName":"\u7f8e\u8fb0\u7d22\u5e97"},{"ShopName":"\u7f8e\u8fb0Think\u5e97"},{"ShopName":"\u4e1c\u829d"},{"ShopName":"\u534e\u7855"},{"ShopName":"\u6234\u5c14"},{"ShopName":"\u65b9\u6b63"}]
我不是很明白:这个格式是 数组 还是 JSON格式, 为什么后面的中文会显示这样呢?

之前的传输页面:
//为了避免系统里面类库的冲突,JQUERY里面的 符号$换成 jQuery

jQuery(function() {
jQuery('#ddlYTShop').change(function(){
jQuery("#ddlB_ShopName").empty();
jQuery.post("Test.php",{id:jQuery('#ddlYTShop').val(),act:"Shop"},
function(data){
jQuery.each(data, function(index, entry){
var option="<option value='"+entry['ShopName']+"'>"+entry['ShopName']+"</option>";
jQuery("#ddlB_ShopName").append(option);
});
});
});
});
这样写返回来的全部是字符串格式,但是显示的全部是 undefined,
好像是要把传回来的字符串格式转换成对象,但是具体不知道写?
所以请教一下各位前辈。

顺便想请教一下 ajax这两种写法有什么区别呢:
$.ajax({
type:"POST",
url:"Test.php",
data: {id: $('#ddlYTShop').val()},
success:function(data){$('div.a').html(data); }
});

$.post("Test.php",{id:$('#ddlYTShop').val()}, function(data){$('div.a').html(data);})
这两种有区别嘛?
展开
 我来答
helen5106
2012-05-19 · TA获得超过1260个赞
知道小有建树答主
回答量:2015
采纳率:0%
帮助的人:1074万
展开全部
先解释下ajax ,post
jq里面post的底层就是ajax,
$.post是ajax的type:post方式的简单实现,同理还有$.get
jq本身具有对返回参数格式化的功能,
请把你的post后面加个参数:
jQuery.post("Test.php",{id:jQuery('#ddlYTShop').val(),act:"Shop"},
function(data){
jQuery.each(data, function(index, entry){
var option="<option value='"+entry['ShopName']+"'>"+entry['ShopName']+"</option>";
jQuery("#ddlB_ShopName").append(option);
});
}, 'json');//这里加个json,就可以了,具体说明请看手册

另外你的2个shop大小写不统一,请仔细检查。
追问
你好,谢谢你的帮助,请教一下,换成 $.get或者$.getjson应该怎么写呢?
古龙允晨0dm
2012-05-18 · TA获得超过172个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:347万
展开全部
":"\u7f8e\u8fb0Think\u5e97"}=>这个中文是经过编码的,你jquery 不用管,自己循环输出就可以了

你如果知道返回的是json,直接用 $.getJSON,给你个例子
$.getJSON(URL+"/getremotexml/?code="+code, function(message){
var msg=message.error;
if(msg!='no'){
$("#result").html(msg);
}else{
var items=message.item;
$.each(items, function(i, good){
var goods=good["@attributes"];
itemg= $.trim(goods.item_code);
}
})

$.post 是$.ajax({ type:"POST", 的简写形式,没啥差别,就是少些代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fhxu6666
2012-05-23 · TA获得超过123个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:73.1万
展开全部
这是数组嵌套json,先解析数组,再解析json.很容易的

第一个ajax写法是全标准写法,第二个是基于post方便的写法,第一个可以看成是他的父亲,,可以理解为继承关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶问857
2012-05-18 · 超过22用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:35.2万
展开全部
json_encode()后输出的是标准json格式数据,utf-8编码
一般使用
$.getJSON("test.js", function(json){
alert("JSON Data: " + json.users[3].name);
});
来获取json数据.
ajax这两种写法没多大区别
更多追问追答
追问
你好,请问这个是什么意思呢? json.users[3].name
追答
更简单明白的方法: 
success: function(json){
json = eval("(" + json + ")");
alert(json.ShopName);
这样去获取值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hhhejiakang
2012-05-17
知道答主
回答量:46
采纳率:0%
帮助的人:11.7万
展开全部
口服平滑扣屁股付款后来看了会开了很反感,了 价格分开了更加快乐的价格来克服经过艰苦浪费是辅导费的份上但是发大水辅导费撒旦法士大夫撒范德萨发阿道夫飞
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式