成功实现ajax,xmlhttp跨域访问
http://www.sp1.cn/web/918.htm

解决方案 »

  1.   

    跨域访问,一般需要这样:
    将url传递到服务器端在服务器端取数据
    或者采用欺骗的办法
      

  2.   

    http://www.xiacong.com/blogview.asp?logID=325
      

  3.   

    l.php 文件如下:
    <?
    @header("Content-type: text/html; charset=utf-8");
    function GetLicense (){
    /**
        *  这里是获得服务器返回资料!
        */ 
    $Server = $_SERVER[HTTP_HOST]=='127.0.0.1' ? "localhost" : $_SERVER[HTTP_HOST] ;
    $DateIs = date("Y-m-d",time());
    $Script = "";
    $Script .="
    <script language=\"JavaScript\"> function GetResult(hostname,TheDate)
    {       
       
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
    http_request = new ActiveXObject(\"Microsoft.XMLHTTP\");
    }
    var linkurl=\"http://localhost/s.php?serverhost=\"+hostname+\"&DateIs=\"+TheDate;
        //alert(linkurl);
    http_request.open('GET',linkurl,false);
    http_request.send(null); //通过XMLHTTP返回数据,开始构建Div.
    //var returntxt=unescape(http_request.responseText)
    var returntxt=http_request.responseText;
    alert(returntxt);
    BuildArrib(returntxt);

    } function BuildArrib(txt)
    {    
    ajax_license.style.display='';
    document.getElementById('ajax_license').innerHTML = txt;
    }
    </script>
    <div id='ajax_license' style='display:none'>&nbsp;111</div> <script language=javascript>
    GetResult('$Server','$DateIs');
    </script>
    ";
    return $Script;
    }
    echo GetLicense();?>s.php 如下:<?php
    error_reporting(7);
    @header("Content-type: text/html; charset=utf-8");$TheError_txt = "
    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
    \"http://www.w3.org/TR/html4/loose.dtd\">
    <html>
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
    <title>SmartShop</title>
    </head>
    <body>
    $TheError
    </body>
    </html>";
       function file_write($filename, $flag, $content) {     if (file_exists($filename)) {
               if (!is_writable($filename)) {               if (!chmod($filename, 0777)) {
                        $TheError = "Cannot change the mode of file ($filename)";
                        return $TheError;
                   };
               }
           }       if (!$fp = @fopen($filename, $flag)) {
               $TheError = "Cannot open file ($filename)";           
           }       if (fwrite($fp, $content) === FALSE) {
               $TheError =  "Cannot write to file ($filename)";
           } 
           if (!fclose($fp)) {
               $TheError = "Cannot close file ($filename)";
           }
       return $content;
       }
    echo file_write("1.txt","w",$TheError_txt);?>
    现在我的问题是。我没有办法输入L.PHP后,使得建立1.txt 文件。请问为什么!!
      

  4.   

    问题已经解决!! 研究及翻阅了很多资料,AJAX跨域访问问题最终的答案好象应该是不可能!
    无论如何,不可能是没有办法了.但是我还是找出来一个好的办法.因为我需要解决的问题是用户认证的问题。我用了一个简单的办法.具体思路如下.开始建立一个TABLE 然后包含一个FORM 这个TABLE 的STYLE 是 DISPLAY: NONE 
    然后在这个表中建立一个IFRAME 名字是ACT 它的TARGET是一个不存在的空白页面 然后在写一个JS, 内容就是FORM.SUBIMIT() 并将需要提交的内容可以提前放到上边的哪个FORM 中. 然后让脚本一出现就自动有提交操作.但是这个提交的TARGET是IFRAME的名字.以上操作完成,就可以实现本页打开有一个隐藏的提交操作.而不刷新屏幕.
    内容已经提交到指定的服务器方面,服务器方面根据需求生成一个.TXT 文件 放到服务器指定地方。
    然后在用户方可以打开这个文件以获得服务器的返回内容.
    我说的比较简单.
    但是做出来的效果和AJAX 几乎是一样的.而且可控制性应该更好。最后还是对AJAX 跨域访问问题表示遗憾. 破碎了很多梦想啊!! 哈.