AJAX的问题

jzkangta 2009-04-09 08:45:38
有如下js

function onException(e) {

return false;
}

function donothing(){}

function xmlhttp()
{

var xconn, bComplete = false;

this.request = function( sUrl, oReq ){

if(window.XMLHttpRequest){
xconn = new XMLHttpRequest();
}
// 支持ActiveX
else if(window.ActiveXObject){
try{
xconn = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
xconn = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if (!xconn){
return false;
}
bComplete = false;
if( !oReq.method ) oReq.method = "GET";
oReq.method = oReq.method.toUpperCase();
async = true;
if( oReq.async == undefined ) async = true;
else if( oReq.async == false || oReq.sync ==true )
async = false;
parameters = oReq.parameters || '';
if (parameters.length > 0)
parameters += '&_ajax=1';
try {
aUrl = sUrl;
if ( oReq.method == "GET"){
if (parameters.length > 0){
aUrl += ( sUrl.match(/\?/) ? '&' : '?') + parameters;
}
parameters = "";
}
xconn.open( oReq.method, aUrl, async );
if( async){
xconn.onreadystatechange = function(){
try{
state = xconn.readyState;
//log4.info( "state:" + state );
(oReq.onReadyState||donothing)( xconn, oReq);

if ( state == 1 && !bComplete){
(oReq.onLoading||donothing)(xconn, oReq);
}
else if ( state == 2 && !bComplete){
(oReq.onLoaded||donothing)(xconn, oReq);
}
else if ( state == 3 && !bComplete){
(oReq.onInteractive||donothing)(xconn, oReq);
}
else if ( state == 4 && !bComplete){
bComplete = true;
(oReq.onComplete||donothing)(xconn, oReq);
retstatus = xconn.status;
if( retstatus != undefined ){
(oReq.onStatus||donothing)( xconn, oReq);
}
if( retstatus == undefined || retstatus == 0 || (retstatus >= 200 && retstatus < 300) ){
(oReq.onSuccess||donothing)(xconn, oReq);
}
else{
(oReq.onFail||donothing)(xconn, oReq);
}
}
}
catch(e){
(oReq.onException||onException)(e);
}
};
}
this.setRequestHeaders( sUrl, oReq );
xconn.send( parameters );
if( !async ){

(oReq.onComplete||donothing)(xconn, oReq);
retstatus = xconn.status;
if( retstatus != "undefined" ){
(oReq.onStatus||donothing)( xconn, oReq);
}
if( retstatus == undefined || retstatus == 0 || (retstatus >= 200 && retstatus < 300) ){
(oReq.onSuccess||donothing)(xconn, oReq);
}
else{
(oReq.onFail||donothing)(xconn, oReq);
}

}
}
catch(z) {
return (oReq.onException||onException)(z);
}
return true;
};

this.setRequestHeaders=function( sUrl, oReq ) {
var requestHeaders = ['X-Requested-With', 'XMLHttpRequest'];


if( oReq.method == 'POST') {
requestHeaders.push('Content-type', 'application/x-www-form-urlencoded');
requestHeaders.push("Method", "POST "+sUrl+" HTTP/1.1");
if( xconn.overrideMimeType)
requestHeaders.push('Connection', 'close');
}
if (oReq.requestHeaders)
requestHeaders = requestHeaders.concat( oReq.requestHeaders);
for (var i = 0; i < requestHeaders.length; i += 2)
xconn.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
};

this.loadJson = function( jsUrl, oReq ){
idstr = "jsonId_"+ ( oReq.jsonId||(new Date().getTime()) );
var elm=document.getElementById(idstr);
if( elm && oReq.cache ){
elm.src = jsUrl + (jsUrl.indexOf("?")>0?"&":"?") +"loadJson="+(new Date().getTime());
}
else{
if( elm ){
elm.parentNode.removeChild(elm);
}
elm = document.createElement("script");
elm.id=idstr;
document.body.appendChild(elm);
elm.src = jsUrl + (jsUrl.indexOf("?")>0?"&":"?") +"loadJson="+(new Date().getTime());
}
var repeat = 0;

if( oReq.callback )
setTimeout( function(){(oReq.callback||donothing)(oReq);} , 500 );

};
return this;
}

这里this.request = function( sUrl, oReq )当sUrl是webSite/webSite.js就可以正常 是http://keyword.bbapp.net:8021/webSite/webSite.js就不可以了 请问大家这是为什么 加上绝对路径是方便其他地方调用的
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mumu_java 2009-04-10
  • 打赏
  • 举报
回复
http://keyword.bbapp.net:8021/webSite/webSite.js
改成
http://127.0.0.1:8021/webSite/webSite.js
应该可以。试试。
jzkangta 2009-04-10
  • 打赏
  • 举报
回复
顶一下
jzkangta 2009-04-10
  • 打赏
  • 举报
回复
谢谢,现在知道原因了,ajax不支持跨域访问

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧