discuz ajax返回html,DISCUZ架构:AJAX之ajax.js 函数之一

以下为引用的内容:

var Ajaxs = new Array();

function Ajax(recvType, statusId) {

var aj = new Object();

aj.statusId = statusId ? document.getElementById(statusId) : null;

aj.targetUrl = '';

aj.sendString = '';

aj.recvType = recvType ? recvType : 'XML';

aj.resultHandle = null;

aj.createXMLHttpRequest = function() {

var request = false;

if(window.XMLHttpRequest) {

request = new XMLHttpRequest();

if(request.overrideMimeType) {

request.overrideMimeType('text/xml');

}

} else if(window.ActiveXObject) {

var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];

for(var i=0; i

try {

request = new ActiveXObject(versions[i]);

if(request) {

return request;

}

} catch(e) {

//alert(e.message);

}

}

}

return request;

}

aj.XMLHttpRequest = aj.createXMLHttpRequest();

这一段是想尽一切办法建立一个XMLHttpRequest对象,无论是什么浏览器都能通用了。调用的时候是一个函数Ajax,有两个传入函数recvType和statusId,recvType是ajax返回值的接受类型,有HTML和XML两种类型,Dz一般用的是XML类型;statusID这个是用来指示状态的div。

以下为引用的内容:

以下为引用的内容:

aj.processHandle = function() {

if(aj.statusId) {

aj.statusId.style.display = '';

}

if(aj.XMLHttpRequest.readyState == 1 && aj.statusId) {

aj.statusId.innerHTML = xml_http_building_link;

} else if(aj.XMLHttpRequest.readyState == 2 && aj.statusId) {

aj.statusId.innerHTML = xml_http_sending;

} else if(aj.XMLHttpRequest.readyState == 3 && aj.statusId) {

aj.statusId.innerHTML = xml_http_loading;

} else if(aj.XMLHttpRequest.readyState == 4) {

if(aj.XMLHttpRequest.status == 200) {

for(k in Ajaxs) {

if(Ajaxs[k] == aj.targetUrl) {

Ajaxs[k] = null;

}

}

if(aj.statusId) {

aj.statusId.innerHTML = xml_http_data_in_processed;

aj.statusId.style.display = 'none';

}

if(aj.recvType == 'HTML') {

aj.resultHandle(aj.XMLHttpRequest.responseText, aj);

} else if(aj.recvType == 'XML') {

aj.resultHandle(aj.XMLHttpRequest.responseXML.lastChild.firstChild.nodeValue, aj);

}

} else {

if(aj.statusId) {

aj.statusId.innerHTML = xml_http_load_failed;

}

}

}

}

Ajax实例化后的对象aj的processHandle方法,作用当然就是处理ajax请求过程的函数。

具体作用有两点:

第一点,那就是对statusId这个div进行ajax请求过程全程提示,在这段代码的前三分之一的样子就是做这个用的。

注意在register.htm中有对过程的定义,以下的代码引用自./templates/default/register.htm

以下为引用的内容:

var profile_seccode_invalid = '{lang register_profile_seccode_invalid}';

var profile_secanswer_invalid = '{lang register_profile_secqaa_invalid}';

var profile_username_toolong = '{lang register_profile_username_toolong}';

var profile_username_tooshort = '{lang register_profile_profile_username_tooshort}';

var profile_username_illegal = '{lang register_profile_username_illegal}';

var profile_passwd_illegal = '{lang register_profile_passwd_illegal}';

var profile_passwd_notmatch = '{lang register_profile_passwd_notmatch}';

var profile_email_illegal = '{lang register_profile_email_illegal}';

var profile_email_invalid = '{lang register_profile_email_invalid}';

var profile_email_censor = '{lang register_profile_email_censor}';

var profile_email_msn = '{lang register_profile_email_msn}';

var doublee = parseInt('$doublee');

var lastseccode = lastsecanswer = lastusername = lastpassword = lastemail = '';

var xml_http_building_link = '{lang xml_http_building_link}';

var xml_http_sending = '{lang xml_http_sending}';

var xml_http_loading = '{lang xml_http_loading}';

var xml_http_load_failed = '{lang xml_http_load_failed}';

var xml_http_data_in_processed = '{lang xml_http_data_in_processed}';

这个便是statusId具体中要提示的文字了,之所以要这样写当然是为了方便多语言。

第二点是最重要的,当XMLHttpRequest.status=200的时候,那么就表示请求成功并返回了东西,这个时候就用resultHandle这个函数对返回的东西进行处理,可以看到还是分为HTML和XML两种情况分别调用不同的方法,一个是responsText一个是responseXML。

以下为引用的内容:

aj.get = function(targetUrl, resultHandle) {

if(in_array(targetUrl, Ajaxs)) {

return false;

} else {

arraypush(Ajaxs, targetUrl);

}

aj.targetUrl = targetUrl;

aj.XMLHttpRequest.onreadystatechange = aj.processHandle;

aj.resultHandle = resultHandle;

if(window.XMLHttpRequest) {

aj.XMLHttpRequest.open('GET', aj.targetUrl);

aj.XMLHttpRequest.send(null);

} else {

aj.XMLHttpRequest.open("GET", targetUrl, true);

aj.XMLHttpRequest.send();

}

}

aj.post = function(targetUrl, sendString, resultHandle) {

if(in_array(targetUrl, Ajaxs)) {

return false;

} else {

arraypush(Ajaxs, targetUrl);

}

aj.targetUrl = targetUrl;

aj.sendString = sendString;

aj.XMLHttpRequest.onreadystatechange = aj.processHandle;

aj.resultHandle = resultHandle;

aj.XMLHttpRequest.open('POST', targetUrl);

aj.XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

aj.XMLHttpRequest.send(aj.sendString);

}

return aj;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS 7中,nginx的主配置文件为/etc/nginx/nginx.conf。您需要在该文件中添加两个虚拟主机的配置,具体步骤如下: 1. 创建两个虚拟主机的配置文件 在/etc/nginx/conf.d目录下创建两个文件,分别命名为kgc.conf和benet.conf,用于配置两个虚拟主机的相关信息: ``` sudo vi /etc/nginx/conf.d/kgc.conf ``` 添加以下内容: ``` server { listen 80; server_name www.kgc.com; root /var/www/html/Discuz/upload; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 再创建另外一个虚拟主机的配置文件: ``` sudo vi /etc/nginx/conf.d/benet.conf ``` 添加以下内容: ``` server { listen 80; server_name www.benet.com; root /var/www/html; index index.html; location / { try_files $uri $uri/ /index.html; } } ``` 2. 配置nginx主配置文件 在nginx主配置文件中引入刚刚创建的两个文件: ``` sudo vi /etc/nginx/nginx.conf ``` 找到http段,添加以下内容: ``` http { ... include /etc/nginx/conf.d/*.conf; ... } ``` 3. 重新加载nginx配置 完成配置文件的修改后,需要重新加载nginx的配置文件: ``` sudo systemctl reload nginx ``` 现在,您可以使用http://www.kgc.com/index.php来访问Discuz论坛页面,使用http://www.benet.com来访问自定义的index.html页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值