最近上头让我用JSON把两个项目连起来,其中涉及到的问题是两个项目不在一个机器上,就是出现跨域传输数据的问题。AJAX的安全机制所以不能跨域传输数据,BAIDU 了一下说也可以但是我没看懂,哪位大哥了解。给我发个demo小弟感激不尽!~

解决方案 »

  1.   

    这个与JSON没有关系,是IE本身的安全机制罢了
    在默认情况下,IE是禁止你在访问A机器的页面时,通过AJAX(即new ActiveXObject("Microsoft.XMLHTTP"))方法向B机器提交数据的如果你希望使用上述的功能,只需要将A、B机器都添加到安全站点就可以了。
    如果无法要求客户这样做,可以考虑在A机器上面部署一个简单的HTTP转发用的war,只负责将请求转发到B机器上,这样对客户来说,访问的还只是A机器,就没有安全问题了
      

  2.   

    可能 我描述的有问题我是想利用AJAX传送JSON数据.但是却不能跨域传送,所以得想别的办法joejoe1991 说的JSONP是个解决的办法.客户端:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml" >  
    <head>  
        <title>Test Jsonp</title>  
        <script type="text/javascript">  
                function jsonpCallback(result)   
                {   
                alert(result.msg);   
                }   
            </script>  
        <script type="text/javascript" src="http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback"></script>  
    </head>  
    <body>  
    </body>  
    </html>   
    那服务端应该是怎么个意思啊应该怎么写呢,我是一个贼新的新手所以比较蒙,请大家帮忙多指点呀 
      

  3.   


    服务器端类似于这样:String callback = request.getParameter("jsonp"); //得到要回调的函数。
    String data = "[1,2,3,4,5,6]"; //假设这个data就是要获取的数据。
    out.println(callback+"("+data+")"); //对客户端函数进行回调,并将服务器端的数据当做参数传给客户端的函数。
      

  4.   

    String callback = request.getParameter("jsonp"); 这样就可以么我的需求:我想在客户端把JSON的字符串{"name":"wyp","password":"123456"}传到服务器上去,在服务器上处理之后在返回一个json的字符串.用jsonp可以解决么
      

  5.   


    你把那个字符串也当做参数会上去啊。比如名字叫json吧。
    就用request.getParameter("json")就可以拿到了。
      

  6.   

    可以解决的http://blog.csdn.net/jallin2001/archive/2010/06/11/5663748.aspx看下这个可能对你有用