jquery中的ajax的回调函数不能执行解决方案

关于jquery中的ajax的回调函数不能执行的原因与解决方法。

在做ajax方法的时候遇到了一个小问题:ajax的回调函数不执行,辛苦折腾半天,最终发现了原因。

简单的问题模拟源代码如下:

Action代码

public void updateIndexPageSeo() {
String json = "";
json = "{flag:true}";
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().getWriter().write(json);
}

前台jquery代码

var param = {'seoIndexPage.seoIndexPageId':seoIndexPageId}
$.ajax({type:"POST", 
url:"/seo/index!updateIndexPageSeo.do",
 data:param, dataType:"json"
, success:function () {
alert("tes");
},error: function(){
alert(arguments[1]);
}
});

执行改ajax方法是一直返回一个错误:parsererror ,这种情况你在firefox等浏览器中监控显示ajax已经返回了json数据,可就是没有进入到success回到函数中。其实这里的原因是返回的json不严格 json=”{flag:true}”; jquery不能解析造成的报错,后面改为 json=”{\”flag\”:\”true\”}”;就没有错误了。

正确的Action写法

public void updateIndexPageSeo() {
String json = "";
json = "{\"flag\":\"true\"}";
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().getWriter().write(json);
}

另外在写action中的方法时需要注意编码的问题:在后面加上getResponse().setContentType(“text/html; charset=utf-8′);注意是utf-8,如果是utf8则firefox没问题,ie会出问题的。

Oracle体系结构:SGA和五个必须的ORACLE后台进程

系统全局区又称SGA(SGA)等一定的内存和ORACLE后台进程组成了ORACLE实例(Instance) ,而数据库(Database)指的是数据库物理文件。oracle五个必须的ORACLE后台进程有是什么?以及什么是SGA?下面做如下详细介绍。

(1)五个必须的ORACLE后台进程:SMON、PMON、DBWn、CKPT、LGWR

系统监控进程(System Monitor SMON) 在数据库系统启动时执行恢复工作的强制性进程
进程监控进程(Process Monitor PMON) 用于恢复失败的数据库用户的强制性进程,它先获取失败用户的标识,释放该用户占有的所有数据库资源。
数据库写入进程(Database Writer, DBWn) 它将修改后的数据块写回数据库文件。日志写入进程(Log Writer , LGWR) 一个专门用于将重做项写入重做日志的进程。
校验点进程(Checkpoint Process CKPT ) ORACLE把内存中脏数据块中的信息写回磁盘的判断进程。

(2)什么是SGA?

系统全局区又称SGA (System Global Area 也称 Shared Global Area) 是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

SGA重要组成的三部分

共享池(Shared Pool) 主要用来存储最近执行过的SQL语句和最近使用过的数据字典的数据;它主要通过INIT.ORA文件中的shared_pool_size和shared_pool_reserved_size两个参数来设置。

数据高速缓存区(Data Buffer Cache) 主要用来存储最近使用过的数据,可能是要写到数据文件的,也可能是从数据文件读取的;它主要通过INIT.ORA文件中db_block_buffers参数来设置;Data Buffer的大小=db_block_buffers* db_block_size;

重做日志缓存区(Redo Log Buffer) 主要存储服务进程和后台进程的变化信息;它主要通过INIT.ORA文件中的log_buffer参数来设置; Redo Log Buffer的大小=log_buffer* db_block_size;

当然,SGA不仅仅只是上面的三部分,还包括如Java pool(用来存储java代码)、Large pool(供不是和SQL直接相关的进程使用,如:当数据备份或恢复操作时,RMAN backup 用作磁盘I/O缓存器;Parallel时用作消息缓存器;MTS回话内存)等部分,我们可以通过v$sysstat、v$rowcache、v$librarycache等系统视图来监控SGA。