费了九牛二虎之力测试了一下这个东东,有学习的供参考!多交流!嘿嘿。。。
第一种方式:
//后台返回值:
{"data":{"bookStatusId":20,"returnTime":"2011-03-05","bookSN":"123456-1","lendTime":"2011-03-02 11:20",
"borrower":"李四","bookId":61,"borrowerId":6,"lendOutId":34,"bookName":"1"},"success":true }
//前台解析:
Ext.Ajax.request({
url : _ctx.base + '/administration/bRet_loadBooksLendOutInfo.action',
params : { ID : comboBox.getValue()},
success : function(response, options){
var resp = Ext.decode(response.responseText);
alert("resp:"+resp+"/value:"+resp.data.borrower);
},
failure : function(response,options){
Ext.Msg.alert("错误","数据加载失败!")
}
});
alert 输出的结果为:resp:[object Object]/value:李四
第二种方式:
//后台返回值:
{"data":{"bookStatusId":20,"returnTime":"2011-03-05","bookSN":"123456-1","lendTime":"2011-03-02 11:20",
"borrower":"李四","bookId":61,"borrowerId":6,"lendOutId":34,"bookName":"1"}}
据说没有success : true , 是不能解析的。经过本人测试,这是错误的说法!
当我只改了后台(去掉了success),其他不变的前提下,输入结果跟第一种方式结果一此。故然反驳。
第三种方式:
//后台返回值去掉了最外层大括号,如下:
{ "bookStatusId":20,"bookSN":"123456-1","returnTime":"2011-03-05","lendTime":"2011-03-02 11:20",
"borrower":"李四","bookId":61,"borrowerId":6,"lendOutId":34,"bookName":"1"}
//前台解析:
success : function(response, options){
var resp = Ext.decode(response.responseText);
alert("resp:"+resp+"/value:"+resp .borrower);
}
alert 输出的结果为:resp:[object Object]/value:李四
第四种方式:
//后台返回值:
[{ "bookStatusId":20,"bookSN":"123456-1","returnTime":"2011-03-05","lendTime":"2011-03-02 11:20",
"borrower":"李四","bookId":61,"borrowerId":6,"lendOutId":34,"bookName":"1"}]
//前台解析:
success : function(response, options){
var resp = Ext.decode(response.responseText);
// var resp = Ext.util.JSON.decode(response.responseText); //这种方式也行
var a = resp[0].lendTime;
alert("borrower:"+a);
}
alert 输出的结果为:borrower:李四。
这里也推翻了多数所说的接收数据规则,如:{ msg:"",data:""}
本人认为只要符合JSON数据接收形式就行了,再看你怎样去获取返回到前台的值。
差不多就这些了,多多交流,给点意见!!!不吝赐教!!!