var my_supplies = {supplies: ['mop', 'broom', 'duster']}
 var html = new EJS({url:'http://192.168.21.87:3001/ejs_template/test.ejs'}).render(my_supplies);
老是报错.跟了下源码,发现当EJS获取URL的时候(request.open("GET", path, false);)返回状态是0没错,但是request.responseText却为空的.可是我把这个地址由浏览器打开来,却可以看到文本,如下.但为回来就是空呢?
所以很纠结.求各大神解惑~javascriptejsjs模板

解决方案 »

  1.   

    简单方法: 把文件的扩展名改下试试
    复杂方法: 可能是ajax的请求头设置不对..没有声明content-type是文本类型
      

  2.   

    另外状态0..楼主应该是直接打开页面运行,请求的本地页面的?
    建议弄个静态WEB服务器..放到服务器里运行.
      

  3.   


    请求头已经改成 res.writeHead(200,{'Content-Type':'text/html'});了请求的是网络EJS文件.前面有加域名.单独去访问是可以访问的.有图.
      

  4.   


    100%跨域了,firefox下原网站和请求的网站端口号即使不一致也算跨域
      

  5.   

    应该不是跨域吧..跨域的话,除非服务端允许跨域..要不然.浏览器不是应该抛错么..
    不应该是返回状态0.100%跨域了,firefox下原网站和请求的网站端口号即使不一致也算跨域
      

  6.   


    100%跨域了,firefox下原网站和请求的网站端口号即使不一致也算跨域IE会报错,firefox这种不会报错,结果不会交给js使用,xhr的状态为0,ajax对象属性withCredentials
      

  7.   


    100%跨域了,firefox下原网站和请求的网站端口号即使不一致也算跨域IE会报错,firefox这种不会报错,结果不会交给js使用,xhr的状态为0,ajax对象属性withCredentials
    一直在用chrome..跨域请求也会报错..
    xhr状态为0的情况..我只记得以前直接点开本地html,里面ajax请求本地文件会是0.后来这种chrome会报跨域错误.
      

  8.   

    跨域是0,自己测试就知道了(发布或者本地的都是),控制台有错误信息,但不影响js代码执行,js获取不到返回值<script>
        var xhr = new XMLHttpRequest();
        xhr.open('get', 'http://bbs.csdn.net/', true);
        xhr.onreadystatechange = function () {
            if (4 == xhr.readyState) alert(xhr.responseText+'\n'+xhr.status);
        }
        xhr.send(null);
    </script>
      

  9.   

    好像是跨域了.
    总体结构是这样的,A域名这个站点,上面有部分内容时由我B服务去自动生成的写入的.这属于跨域了已经,但是我B服务已经允许跨域了.EJS文件也是在我B上,我在B服务上用的全路径调用B上的EJS.为什么还会产生跨域的问题呢?
    这个问题就好奇怪了的.
      

  10.   

    http://bbs.csdn.net/topics/390542772看这篇里面讨论的跨域部分。