置顶:MOSS SP1开始支持AJAX。首先确认你的MOSS版本号
想必开发过MOSS AJAX控件的都知道,为了实现AJAX,必须对MOSS的环境进行大量的设置。网上有大量此类的文章,其中最流行的做法应该是刊登在moss开发团队blog上的(点击下面的URL进入)。
(http://blogs.msdn.com/sharepoint/archive/2007/03/02/integrating-asp-net-ajax-with-sharepoint.aspx)
简单概括一下步骤的话:
1. 下载并安装ASP.NET AJAX( http://www.asp.net/ajax/)
2. 扩展web.config使其支持ASP.NET AJAX
3. 在master pager上添加ASP.NET AJAX Script Manager
算得上是官方推荐的做法吧,只是有点麻烦,好在对MOSS进行AJAX扩展的人越来越多,网上出现了很多简便的做法,下面是鄙人的心得
1. 下载并安装ASP.NET AJAX
2. 下载并安装stsadm.ajaxifymoss自动配置web.config
3. Webparts的OnInit事件里添加ASP.NET AJAX Script Manager
接下来对各个步骤进行介绍
1 下载并安装ASP.NET AJAX( http://www.asp.net/ajax/)
推荐安装ASP ......
1. http://hi.baidu.com/lshun/blog/item/2378b4c36fdef455b219a85b.html
CODE:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<pets>
<猫 />
<狗 />
<鱼 />
</pets>
</data>
然后我们能够遍历元素<pets>里的节点。这个processXML函数看起来就像这样:
[Copy to clipboard]
CODE:
function processXML(obj){
var dataArray = obj.getElementsByTagName('pets')[0].childNodes;
var dataArrayLen = dataArray.length;
var insertData = '<table style="width:150px; border: solid 1px #000"><tr><th>'
+ 'Pets</th></tr>';
for (var i=0; i<dataArrayLen; i++){
&n ......
从数据库my中的username用户表里验证:
checkusername.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script language="javascript">
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function send_request(url,data){
createXMLHttpRequest();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = check_lll;
xmlHttp.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
xmlHttp.send("username=" + data);
}
function check_lll(){
if(xmlHttp.r ......
Case I. Web代理的方式 (on Server A)
即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果。此方案可以解决现阶段所能够想到的多数跨域访问问题,但要求A网站提供Web代理的支持,因此A网站与B网站之间必须是紧密协作的,且每次交互过程,A网站的服务器负担增加,且无法代用户保存session状态。
Case II. on-Demand方式 (on Server A)
MYMSN的门户就用的这种方式,不过 MYMSN中不涉及跨域访问问题。在页面内动态生成新的<mce:script type="text/javascript"><!--
,将其src属性指向别的网站的网址,这个网址返回的内容必须是合法的Javascript脚本,常用的是JSON消息。此方案存在的缺陷是, script的src属性完成该调用时采取的方式时get方式,如果请求时传递的字符串过大时,可能会无法正常运行。不过此方案非常适合聚合类门户使用。
<html>
<head>
<script language="javascript" type="text/javascript">
function loadContent()
{
var s=document.createElement('SCRIPT');
s.src='http://www.anotherdomain.com/TestCrossJS.aspx?f=setDivContent';
docum ......
PHP 5.2 及以上版本提供了 json_encode 和 json_decode 函数,相当好用。
而之前的版本则需要下载网友们自行开发的库(有兴趣的可以看下 http://code.itlearner.com/php/JSON-class.html )
可以参考如下这个方法来在低版本上扩充这两个函数:
if (!function_exists('json_encode') && !function_exists('json_decode')) {
require_once ROOT . 'include/json.class.php';
$g_service_json = new Services_JSON;
function json_encode($arr) {
global $g_service_json;
return $g_service_json->encode($arr);
}
function json_decode($arr) {
global $g_service_json;
return $g_service_json->decode($arr);
}
}
如此一来,你也可以在低版本的 PHP 上使用 json_encode 和 json_decode 函数了。
而对于 xml 的输出,当然可以使用 xml 的库,然而日常开发中,轻量级的使用 xml 输出其实并不需要太过复杂的功能。
因此我写了一个更简单的 ajax_encode 函数,有兴趣的兄弟可以参考下:
/**
* Description:
* A simple function for outputing XML
* History:
* Created by Moky @ 2009-11-26
......
PHP 5.2 及以上版本提供了 json_encode 和 json_decode 函数,相当好用。
而之前的版本则需要下载网友们自行开发的库(有兴趣的可以看下 http://code.itlearner.com/php/JSON-class.html )
可以参考如下这个方法来在低版本上扩充这两个函数:
if (!function_exists('json_encode') && !function_exists('json_decode')) {
require_once ROOT . 'include/json.class.php';
$g_service_json = new Services_JSON;
function json_encode($arr) {
global $g_service_json;
return $g_service_json->encode($arr);
}
function json_decode($arr) {
global $g_service_json;
return $g_service_json->decode($arr);
}
}
如此一来,你也可以在低版本的 PHP 上使用 json_encode 和 json_decode 函数了。
而对于 xml 的输出,当然可以使用 xml 的库,然而日常开发中,轻量级的使用 xml 输出其实并不需要太过复杂的功能。
因此我写了一个更简单的 ajax_encode 函数,有兴趣的兄弟可以参考下:
/**
* Description:
* A simple function for outputing XML
* History:
* Created by Moky @ 2009-11-26
......
学习Ajax教程,详细了解Get与Post
Get方式:
作用:可传送简单数据
大小:url最大长度是2083 bytes,可以用于GET传递数据的长度是2048 bytes
包含体:数据追加到url中发送,也就是http的header传送
Post方式:
作用:可传送简单复杂数据
大小:web.config里限制
包含体:数据在http请求的实体内容里传送
Ajax用Post模式传送数据.需注意:
1.设置header的Context-Type为application/x-www-form-urlencode确保服务器知道实体中有参数变量.
通常使用XmlHttpRequest对象的SetRequestHeader("Context-Type","application/x-www-
form-urlencoded;")
2.参数是名/值一一对应的键值对,每对值用&号隔开.如 name=abc&sex=man&age=18.
3.参数在Send(参数)方法中发送
4.服务器端请求参数区分Get与Post.例如asp.net中以Request.Form["name"]对实体中的参数请求.这时url参数请求Request.QueryString["name"]将引发异常
以下为引用的内容:
<javascript language="javascript>
function StateEvent()
{
if(XmlHttpObject.readyState == 4)
{
if(XmlHttpObject.status == 200)
{
//code
}
}
}
function Cre ......