net.sf.json.JSONObject json = new net.sf.json.JSONObject()
json.put("shjg","1")
json.put("zg","2")
json.put("zgb","3")
jsonObj.put("mydata", json)
response.getWriter().write(jsonObj.toString())
response.getWriter().flush()
response.getWriter().close()
return null
第一个问题,ajax提交时不会自动提交表单,必须自己处理。你可以在网上找ajax提交表单的方法,或者手动把要传递的参数拼到url中。第二个问题,在action中用response..getWriter().write(json),就可以直接把json传到客户端了。
JSON可以理解为JavaScript的对象序列化的字符串, 你看下JSON的内容, 会发现和代码中写的对象字面量基本一样, 所以使用eval方法即可将JSON转换为对象.Ext仅仅是简单的封装eval方法, 以适应不同标准的JSON
源代码:
Ext.util.JSON.decode = function(json){
return eval('(' + json + ')')
}
你可以自己alert出来看
//示例
Ext.onReady(function() {
Ext.Ajax.request({
url: 'getmsg.action?user=1',
method: 'GET',
success: function(resp, options) {
//标准JSON字符串 '{"data": [{"msg":"abcd"}]}'
var jsonObj = Ext.util.JSON.decode(resp.responseText)
//显示模态提示框
Ext.Msg.alert('title', jsonObj.data[0].msg, function(btn){
//Ext的模态窗口仅仅是屏蔽 *** 作, 并不阻塞线程, js也没有线程, 这点非常重要
//提示框的按钮事件回调
alert(btn)//后执行
})
alert(1)//先执行
}
//failure: function() {...} //可选的
})
})
Ext的ApiDoc做得非常好, 对学习有很大的帮助. 千万不要看一些所谓的中文版, 有很多机器翻译不说, 还有很多未校对的错误.
另: 学习ExtJS要掌握闭包的概念, 这个是js一个非常重要的特性, Ext使用该特性模拟了继承及封装, 在一定程度上实现了面向对象编程. 当然你也可以无视Ext的继承机制, 使用js本身的原型继承(prototype)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)