在Windows Nginx情况下JFINAL的RenderText无法返回数据!

糖豆 发布于 2013/07/04 13:30
阅读 1K+
收藏 1

@JFinal 你好,想跟你请教个问题:我在使用JFinal 1.4,一直都使用正常,感觉开发速度飞快,确实是好东西,但最近遇到一个大问题,没有解决的办法,来向您请教一下:

将JFinal开发的程序用8400端口发布出来,ACTION里使用RenderText返回数据给AJAX调用,一切正常,考虑到静态文件用TOMCAT发布性能太差,就在TOMCAT前面部署了WINDOWS版的NGINX 1.5,ZIP文件由NGINX解析提供,其它请求转发给TOMCAT,这时问题来了,AJAX无法获取到RenderText 返回的数据!


我实在是无法理解了,因为同样的SPRING + STRUTS2的程序在NGINX后面一切正常,特来请教一下如何处理?

经调试,可以进入Controller的代码中,说明路由一切正常,而且RenderJSP一切正常,现在发现是RenderText无法返回数据到JSP里。


AJAX的调用 是这样的:

function test()
{
	  $.ajax({
		    url: '<%=basePath%>test',
		    type: 'POST',
		    timeout: 3000,	    
		    success: function(data)
		    {
		    	alert(data);
		    }
		});
}

JAVA的Controller中代码:

	public void test()
	{
		System.out.println("测试!");		
		renderText("测试!");		
	}

附上NGINX的配置文件:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8400;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        
        location / {
            #root   html;
            #index  index.html index.htm;
	proxy_pass http://10.10.3.5:8500;  
        }


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}



加载中
0
樂
renderJson 如何呢?
樂
回复 @糖豆 : 谷歌浏览器调试下 看看后台返回的是什么东西
糖豆
糖豆
尝试了,renderJson也无法返回数据到前台。
0
胡小翔
胡小翔

default_type  application/octet-stream;

会不会是这个的问题??

糖豆
糖豆
而且我测试了在STRUTS2的框架中,这个NGINX的配置文件是能返回TEXT和JSON的。
糖豆
糖豆
那请问该如何处理?
0
糖豆
糖豆
如果大家想构建测试环境,可以到 http://nginx.org/en/docs/windows.html去下载最新1.5版,我测试了这个NGINX和低版本的都不支持现在JFINAL的RENDERTEXT返回数据。这是个大问题,因为开发完的程序不可能不在NGINX后端去跑,集群是非常有必要的。
0
糖豆
糖豆

经测试,发现浏览器返回的是:

服务器不能跨域获取AJAX数据。

返回顶部
顶部