AJAX跨域访问难题 成功实现ajax,xmlhttp跨域访问http://www.sp1.cn/web/918.htm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 跨域访问,一般需要这样:将url传递到服务器端在服务器端取数据或者采用欺骗的办法 http://www.xiacong.com/blogview.asp?logID=325 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'> 111</div> <script language=javascript>GetResult('$Server','$DateIs');</script>"; return $Script;}echo GetLicense();?>s.php 如下:<?phperror_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 文件。请问为什么!! 问题已经解决!! 研究及翻阅了很多资料,AJAX跨域访问问题最终的答案好象应该是不可能!无论如何,不可能是没有办法了.但是我还是找出来一个好的办法.因为我需要解决的问题是用户认证的问题。我用了一个简单的办法.具体思路如下.开始建立一个TABLE 然后包含一个FORM 这个TABLE 的STYLE 是 DISPLAY: NONE 然后在这个表中建立一个IFRAME 名字是ACT 它的TARGET是一个不存在的空白页面 然后在写一个JS, 内容就是FORM.SUBIMIT() 并将需要提交的内容可以提前放到上边的哪个FORM 中. 然后让脚本一出现就自动有提交操作.但是这个提交的TARGET是IFRAME的名字.以上操作完成,就可以实现本页打开有一个隐藏的提交操作.而不刷新屏幕.内容已经提交到指定的服务器方面,服务器方面根据需求生成一个.TXT 文件 放到服务器指定地方。然后在用户方可以打开这个文件以获得服务器的返回内容.我说的比较简单.但是做出来的效果和AJAX 几乎是一样的.而且可控制性应该更好。最后还是对AJAX 跨域访问问题表示遗憾. 破碎了很多梦想啊!! 哈. 【编程风格】为什么不推荐在新行上写 左括号 和 右括号? 想要输出图片,结果输出了乱码,请问什么原因? 求助:关于遍历文件夹 php里为啥我 try/catch 了异常,还是显示警告呢... 谁整过uchome二次开发 请文大家对数据库更新查改?又好用的类嘛? 怎么把一个文本输入框里输入的值保留下来,并传值 求解高分简单问题!在线等答案!快快快 PHP查询Mysql数据的问题!? 比方放我想搞个像oschinagit 那种git 怎么搞 招聘PHP高级程序员,新手勿扰,能同时会JAVA者优先。 php连接mysql的连接效率问题,帮帮忙啊,高分相送,直至解决!
将url传递到服务器端在服务器端取数据
或者采用欺骗的办法
<?
@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'> 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 文件。请问为什么!!
无论如何,不可能是没有办法了.但是我还是找出来一个好的办法.因为我需要解决的问题是用户认证的问题。我用了一个简单的办法.具体思路如下.开始建立一个TABLE 然后包含一个FORM 这个TABLE 的STYLE 是 DISPLAY: NONE
然后在这个表中建立一个IFRAME 名字是ACT 它的TARGET是一个不存在的空白页面 然后在写一个JS, 内容就是FORM.SUBIMIT() 并将需要提交的内容可以提前放到上边的哪个FORM 中. 然后让脚本一出现就自动有提交操作.但是这个提交的TARGET是IFRAME的名字.以上操作完成,就可以实现本页打开有一个隐藏的提交操作.而不刷新屏幕.
内容已经提交到指定的服务器方面,服务器方面根据需求生成一个.TXT 文件 放到服务器指定地方。
然后在用户方可以打开这个文件以获得服务器的返回内容.
我说的比较简单.
但是做出来的效果和AJAX 几乎是一样的.而且可控制性应该更好。最后还是对AJAX 跨域访问问题表示遗憾. 破碎了很多梦想啊!! 哈.